Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation d'une élécommande

    4 octobre 2018 à 19:53:07

    Bonjour

    Voilà je viens vous demander de l'aide car je gallére un peu avec la programmation d'une télécommande assez basique, en gros voici mon projet :

    J'ai un Arduino type Uno relié à 5 boutons sur les pin 2,3,4,5 et 6 et un éméteur 433Mhz sur le pin 1 (Tx)

    Le but c'est que à chaque appui sur un des bouton un code correspondant soit envoyé pour allumer quelque chose (prise radiocommandé)

    Je pense devoir utiliser la fonction switchcase mais j'avoue que je vois pas trop comment m'y prendre.

    Merci d'avance pour votre coup de main.

    Cdt

    • Partager sur Facebook
    • Partager sur Twitter
      4 octobre 2018 à 20:05:11

      Lu',

      commence par coder les "codes correspodant" dans des fonctions, que tu testera independament, histoire de verifier qu'elles fonctionnent comme il faut. Puis dans le loop, tu n'auras plus qu'à checkerr quel bouton est appuyé pour savoir la quelle de ces fonctions appeller.

      C'est un simple jeu de if.

      • Partager sur Facebook
      • Partager sur Twitter

      Eug

        9 octobre 2018 à 14:28:11

        Bonjour

        Merci de t'a réponse si j'ai bien compris cela doit ressembler à ça :

        #include <VirtualWire.h>
         const int BOUTON_1 = 2;
         const int BOUTON_2 = 3;  
         const int BOUTON_3 = 4;  
         const int BOUTON_4 = 5;
         const int BOUTON_5 = 6;
          int etat_bouton_1 = 0;
          int etat_bouton_2 = 0;  
          int etat_bouton_3 = 0;    
          int etat_bouton_4 = 0;
          int etat_bouton_5 = 0;
           int entree_tx= 1;                 
        
        void setup() {
         pinMode(BOUTON_1, INPUT); 
         pinMode(BOUTON_2, INPUT);  
         pinMode(BOUTON_3, INPUT); 
         pinMode(BOUTON_4, INPUT);
         pinMode(BOUTON_5, INPUT);
          digitalWrite(BOUTON_1, LOW); 
          digitalWrite(BOUTON_2, LOW); 
          digitalWrite(BOUTON_3, LOW); 
          digitalWrite(BOUTON_4, LOW); 
          digitalWrite(BOUTON_5, LOW);
           vw_setup(2000);
           vw_set_tx_pin(entree_tx); 
            Serial.begin(9600);
            Serial.println ("Go"); }
        
        void loop() {
        
        if (BOUTON_1, HIGH){
          Serial.println("Bouton_1 == 1310740");
          vw_send(1310740,24); 
          vw_wait_tx(); 
          delay (20); }
          
        else if (BOUTON_2, HIGH){
          Serial.println("Bouton_2 == 1310741");
          vw_send(1310741,24); 
          vw_wait_tx();
          delay (20); }
         
        else if (BOUTON_3, HIGH){
          Serial.println("Bouton_3 == 1327124");
          vw_send(1327124,24); 
          vw_wait_tx();
          delay (20); }
        
        else if (BOUTON_4, HIGH){
          Serial.println("Bouton_4 == 1327125");
          vw_send(1327125,24); 
          vw_wait_tx();
          delay (20); }
        
        else if (BOUTON_5, HIGH){
          Serial.println("Bouton_5 == 1314836");
          vw_send(1314836,24); 
          vw_wait_tx();
          delay (20); } 
         
        }



        • Partager sur Facebook
        • Partager sur Twitter
          10 octobre 2018 à 19:50:27

          Bonjour

          J'ai pas mal modifié mon code mais je n'arrive pas à le televerser dans mon arduino apparament ce serait une erreur de conversion.

          Si quellsu'un peux m'aider ça serait super

          Le code :

          #include <VirtualWire.h>
           int LAMPE_PISCINE = 2;
           int LAMPE_TERRASSE = 3;  
           int STORE_UP = 4;  
           int STORE_STOP = 5;
           int STORE_DOWN = 6;
            int etat_LAMPE_PISCINE = 0;
            int etat_LAMPE_TERRASSE = 0;  
            int etat_STORE_UP = 0;    
            int etat_STORE_STOP = 0;
            int etat_STORE_DOWN = 0;
            int LedPin = 13;
             int entree_tx= 1;                 
          
          
          void setup() {
           pinMode(LAMPE_PISCINE, INPUT); 
           pinMode(LAMPE_TERRASSE, INPUT);  
           pinMode(STORE_UP, INPUT); 
           pinMode(STORE_STOP, INPUT);
           pinMode(STORE_DOWN, INPUT);
            pinMode (LedPin, OUTPUT);
             digitalWrite(LAMPE_PISCINE, LOW); 
             digitalWrite(LAMPE_TERRASSE, LOW); 
             digitalWrite(STORE_UP, LOW); 
             digitalWrite(STORE_STOP, LOW); 
             digitalWrite(STORE_DOWN, LOW);
              vw_setup(2000);
              vw_set_tx_pin(entree_tx); 
               Serial.begin(9600);
               Serial.println ("INITIALISATION OK"); }
          
          
          void loop() {
            
          etat_LAMPE_PISCINE = digitalRead(LAMPE_PISCINE);
          etat_LAMPE_TERRASSE = digitalRead(LAMPE_TERRASSE);
          etat_STORE_UP = digitalRead(STORE_UP);
          etat_STORE_STOP = digitalRead(STORE_STOP);
          etat_STORE_DOWN = digitalRead(STORE_DOWN);
          
          if (etat_LAMPE_PISCINE == HIGH){                              // A configurer en mode 2 : Auto-lock
            Serial.println("LAMPE_PISCINE == 1310740");
            vw_send(1310740,24); 
            vw_wait_tx(); 
            digitalWrite (LedPin, HIGH); 
            delay (20);
            digitalWrite (LedPin, LOW); }
            
          else if (etat_LAMPE_TERRASSE == HIGH){                        // A configurer en mode 2 : Auto-lock
            Serial.println("LAMPE_TERRASSE == 1310741");
            vw_send(1310741,24); 
            vw_wait_tx();
            digitalWrite (LedPin, HIGH); 
            delay (20);
            digitalWrite (LedPin, LOW); }
           
          else if (etat_STORE_UP == HIGH){                              // A configurer en mode 3 : Inter-lock
            Serial.println("STORE_UP == 1327124");
            vw_send(1327124,24); 
            vw_wait_tx();
            digitalWrite (LedPin, HIGH); 
            delay (20);
            digitalWrite (LedPin, LOW);
               if (etat_STORE_STOP == HIGH){                       
                 Serial.println("STORE_STOP == 1327125");
                 vw_send(1327125,24); 
                 vw_wait_tx();
                 digitalWrite (LedPin, HIGH); 
                 delay (20);
                 digitalWrite (LedPin, LOW); }
               else {
                 delay (90000);
                 Serial.println("STORE_STOP == 1327125");
                 vw_send(1327125,24); 
                 vw_wait_tx();
                 digitalWrite (LedPin, HIGH); 
                 delay (20);
                 digitalWrite (LedPin, LOW); }}
          
          else if (etat_STORE_DOWN == HIGH){                            // A configurer en mode 3 : Inter-lock
            Serial.println("STORE_DOWN == 1314836");
            vw_send(1314836,24); 
            vw_wait_tx();
            digitalWrite (LedPin, HIGH); 
            delay (20);
            digitalWrite (LedPin, LOW);
               if (etat_STORE_STOP == HIGH){                       
                 Serial.println("STORE_STOP == 1327125");
                 vw_send(1327125,24); 
                 vw_wait_tx();
                 digitalWrite (LedPin, HIGH); 
                 delay (20);
                 digitalWrite (LedPin, LOW); }
               else {
                 delay (90000);
                 Serial.println("STORE_STOP == 1327125");
                 vw_send(1327125,24); 
                 vw_wait_tx();
                 digitalWrite (LedPin, HIGH); 
                 delay (20);
                 digitalWrite (LedPin, LOW); }}
           else ; }

          et le message d'erreur :

          
          
          
          
          
          
          
          
          K:\Telecommande_papa\Telecommande_papa.ino: In function 'void loop()':
          
          K:\Telecommande_papa\Telecommande_papa.ino:45:21: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
             vw_send(1310740,24); 
          
                               ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:53:21: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
             vw_send(1310741,24); 
          
                               ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:61:21: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
             vw_send(1327124,24); 
          
                               ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:68:26: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
                  vw_send(1327125,24); 
          
                                    ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:76:26: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
                  vw_send(1327125,24); 
          
                                    ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:84:21: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
             vw_send(1314836,24); 
          
                               ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:91:26: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
                  vw_send(1327125,24); 
          
                                    ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          K:\Telecommande_papa\Telecommande_papa.ino:99:26: warning: invalid conversion from 'long int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
          
                  vw_send(1327125,24); 
          
                                    ^
          
          In file included from K:\Telecommande_papa\Telecommande_papa.ino:2:0:
          
          D:\Arduino\arduino-1.6.10\libraries\VirtualWire/VirtualWire.h:266:20: note: initializing argument 1 of 'uint8_t vw_send(uint8_t*, uint8_t)'
          
               extern uint8_t vw_send(uint8_t* buf, uint8_t len);
          
                              ^
          
          
          Le croquis utilise 4 132 octets (12%) de l'espace de stockage de programmes. Le maximum est de 32 256 octets.
          Les variables globales utilisent 437 octets (21%) de mémoire dynamique, ce qui laisse 1 611 octets pour les variables locales. Le maximum est de 2 048 octets.
          

          Merci d'avance.

          cordialement.

          • Partager sur Facebook
          • Partager sur Twitter
            16 octobre 2018 à 13:24:39

            Arduino, j'y connais rien mais le dans le pavé de message d'erreur que vous nous données, il n'y que des warning, et c'est toujours le même, c'est que vous ne respectez pas vraiment le typage parce que vous utilisez salement des valeurs en dur au lieu d'utiliser des constantes typées dans votre code.

            Mais c'est pas ça qui empêche le "téléversement".

            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

            Programmation d'une élécommande

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown