?? Non, son code est bon à ce niveau.Lorsque tu allumes ton Arduino, les différentes variables sont initialisées, puis setup() est exécutée. Ensuite, loop() est répété. Si tu appuies sur le bouton et que ton système reçoit le signal, la condition est validée et bouton vaut le code reçu par IR. Tu mets bouton à zéro à la fin de ta boucle, donc si tu n'appuies pas sur la télécommande, rien n'est reçu, et bouton reste à zéro. Donc ta condition n'est jamais vérifié et ta led ne s'allume pas.
Le fait de remettre la variable bouton à 0 permet de ne pas rentrer de nouveau dans la condition.
C'est parce qu'il faut réinitialiser la variable bouton lorsque tu éteins ta LED.J'ai fais à peu près le même code; quand j'appuie sur le bouton 7, la condition est validée, la led s'allume mais je n'arrive pas à sortir de la condition, la led s'allume sans arrêt, comment je pourrai faire ??
D'ailleurs, tu n'as pas modifié la ligne que je t'ai dit.
Voila le code modifié :
#include <IRremote.h> #define DEBUG int bouton = 0; int IR_RECEIVER = 2; IRrecv ir_receiver(IR_RECEIVER); decode_results result; void setup() { ir_receiver.enableIRIn(); Serial.begin(9600); pinMode(12, OUTPUT); } void loop() { if (ir_receiver.decode(&result)) { bouton = result.value; // <======== modification ici } Serial.print(bouton); Serial.print("\n"); if(bouton == -2843 || bouton == 6375) { digitalWrite(12, HIGH); delay(500); digitalWrite(12, LOW); bouton = 0; // <============= modification ici } }
Et s'il te plait, quand tu met du code, pense à le mettre entre les balises [ code] et [ /code]
++
Black Templar