Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commande d'une LED RGB avec arduino et commande IR

    7 avril 2019 à 13:56:48

    Bonjour,

    Dans le but de faire un bandeau de LED commandé par une télécommande infrarouge et un Arduino, je fais des tests avec une DEL rgb pour l'instant. J'ai voulu avec la télécommande infrarouge, faire des positions de base pour la DEL. Seulement, une fois qu'une des positions est enclenchée, je ne peux ni éteindre la DEL ni passer à une autre position. Je pense que c'est du au fait que j'utilise une condition while  pour que la position tourne en boucle mais je ne trouve pas d'autre solution pour que la position tourne à l'infini mais qu'on puisse changer de position. J'ai essayer en enlevant la condition while mais comme je m'y attendais la position ne s'exécute qu'une fois (qui ne tente rien n'a rien). Je vous met à disposition un schéma de mon montage ainsi qu'une copie de mon code.

    Si quelqu'un sait m'aider, je lui en serait reconnaissant :)
    #include "IRremote.h"
    
    #define RED 2
    #define GREEN 3
    #define BLUE 4
    
    int receiver = 11;
    int power = 0;
    int pos = 0;
    
    int redValue;
    int greenValue;
    int blueValue;
    
    int delaytime = 10;
    IRrecv irrecv(receiver);
    decode_results results;
    
    
    void setup() {
      pinMode(RED, OUTPUT);
      pinMode(GREEN, OUTPUT);
      pinMode(BLUE, OUTPUT);
      Serial.begin(9600);
      Serial.println("IR Receiver Button Decode"); 
      irrecv.enableIRIn();
    }
    
    void loop() {
      if (irrecv.decode(&results)) 
    
      {
        translateIR(); 
        irrecv.resume(); 
      }  
    
    }
    
    void translateIR() {
        switch(results.value) {
          case 0xFFA25D:
            pos = 0;
            if (power == 0) {
              Serial.println("POWER ON");
              redValue = 255;
              greenValue = 255;
              blueValue = 255;
              analogWrite(RED, redValue);
              analogWrite(GREEN, greenValue);
              analogWrite(BLUE, blueValue);         
              power = 1;
            }
            else {
              Serial.println("POWER OF");
              redValue = 0;
              greenValue = 0;
              blueValue = 0;
              analogWrite(RED, redValue);
              analogWrite(GREEN, greenValue);
              analogWrite(BLUE, blueValue); 
              power = 0;
            }
            break;
    
          case 0xFF30CF: 
            Serial.println("1");
            pos = 1;
            while (pos == 1) {
                redValue = 255;
                greenValue = 0;
                blueValue = 0;
                for (int i=0; i<255; i++) {
                  redValue -= 1;
                  greenValue += 1;
                  analogWrite(RED, redValue);
                  analogWrite(GREEN, greenValue);
                  delay(delaytime);
                }
                
                redValue = 0;
                greenValue = 255;
                blueValue = 0;
                for (int i=0; i<255; i++) {
                  greenValue -= 1;
                  blueValue += 1;
                  analogWrite(GREEN, greenValue);
                  analogWrite(BLUE, blueValue);
                  delay(delaytime);
                }
    
                redValue = 0;
                greenValue = 0;
                blueValue = 255;
                for (int i=0; i<255; i++) {
                  blueValue -= 1;
                  redValue += 1;
                  analogWrite(BLUE, blueValue);
                  analogWrite(RED, redValue);
                  delay(delaytime);
                }
            }
            break;
    
            case 0xFF18E7: 
              Serial.println("2"); 
              pos = 2;
              while (pos == 2) {
                redValue = 255;
                greenValue = 0;
                blueValue = 0;
                analogWrite(RED, redValue);
                analogWrite(GREEN, greenValue);
                analogWrite(BLUE, blueValue);
                delay(5000);
                redValue = 0;
                greenValue = 255;
                blueValue = 0;
                analogWrite(RED, redValue);
                analogWrite(GREEN, greenValue);
                analogWrite(BLUE, blueValue);
                delay(5000);
                redValue = 0;
                greenValue = 0;
                blueValue = 255;
                analogWrite(RED, redValue);
                analogWrite(GREEN, greenValue);
                analogWrite(BLUE, blueValue);
                delay(5000);
              }
              break;
        }
    
        delay(500);
    }



    • Partager sur Facebook
    • Partager sur Twitter
      Staff 13 avril 2019 à 17:32:52

      Bonjour,

      Mauvais forum

      Le sujet est déplacé de la section Do It Yourself vers la section Électronique

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        24 avril 2019 à 13:43:56

        Benzouye a écrit:

        Bonjour,

        Mauvais forum

        Le sujet est déplacé de la section Do It Yourself vers la section Électronique


        D'accord, merci à toi, j'y penserais la prochaine fois.
        • Partager sur Facebook
        • Partager sur Twitter

        Commande d'une LED RGB avec arduino et commande IR

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown