Aujourd’hui on va apprendre à comment utiliser l’infrarouge avec arduino.
Tu vas pouvoir utiliser les touches inutiles de la télécommande de ta TV ou utiliser la télécommande qui sont souvent dans les kit arduino.
// Copyright https://retroetgeek.com #include <IRremote.h> #define RECV_PIN 11 #define ROUGE_PIN 6 #define VERT_PIN 5 #define BLEU_PIN 4 #define LED_PIN 7 String mode = "" ; String valueColor = "" ; String hexIr = "" ; IRrecv irrecv(RECV_PIN); decode_results results; /* 0 ffb04f 1 ff30cf 2 ff18e7 3 ff7a85 4 ff10ef 5 ff38c7 6 ff5aa5 7 ff42bd 8 ff4ab5 9 ff52ad Vol- ff6897 Vol+ ff9867 Arriere ffe01f Avant ffa857 Lecture ff906f Mode ff22dd Enter ff02fd Eq ffc23d OnOff ffa25d Stop ff629d Mute ffe21d */ void setup() { Serial.begin(57600); irrecv.enableIRIn(); // Start the receiver pinMode(ROUGE_PIN,OUTPUT); pinMode(VERT_PIN,OUTPUT); pinMode(BLEU_PIN,OUTPUT); pinMode(LED_PIN,OUTPUT); } void loop() { // catch IR if (irrecv.decode(&results)) { // tansform value of IR in hex ( decimal to hex ) hexIr = String(results.value, HEX); Serial.print("ValueIr "); Serial.println(hexIr); irrecv.resume(); // Receive the next value // if Mute we can define value of RED if(hexIr == "ffe21d"){ mode = "rouge"; Serial.println("Mode Rouge"); ledOn (); }//EQ green if(hexIr == "ffc23d"){ mode = "vert"; Serial.println("Mode Vert"); ledOn (); }//lecture blue if(hexIr == "ff906f"){ mode = "bleu"; Serial.println("Mode Bleu"); ledOn (); } // validate and apply color with enter if(hexIr == "ff02fd"){ Serial.print("ENTRER "); Serial.println(valueColor.toInt()); // write value for red if(mode == "rouge"){ analogWrite(ROUGE_PIN,valueColor.toInt()); valueColor = ""; mode = ""; Serial.println("OK Rouge "); } // write value for green if(mode == "vert"){ analogWrite(VERT_PIN,valueColor.toInt()); valueColor = ""; mode = ""; } // write value for blue if(mode == "bleu"){ analogWrite(BLEU_PIN,valueColor.toInt()); valueColor = ""; mode = ""; } } // STOP if(hexIr =="ff629d"){ analogWrite(ROUGE_PIN,0); analogWrite(VERT_PIN,0); analogWrite(BLEU_PIN,0); } // mode color to catch value if( mode != "" ){ //hexIr if( hexIr == "ffb04f"){ // 0 valueColor+="0"; ledOn(); } else if( hexIr == "ff30cf"){ // 1 valueColor+="1"; ledOn(); } else if( hexIr == "ff18e7"){ // 2 valueColor+="2"; ledOn(); } else if( hexIr == "ff7a85"){ // 3 valueColor+="3"; ledOn(); } else if( hexIr == "ff10ef"){ // 4 valueColor+="4"; ledOn(); } else if( hexIr == "ff38c7"){ // 5 valueColor+="5"; ledOn(); } else if( hexIr == "ff5aa5"){ // 6 valueColor+="6"; ledOn(); } else if( hexIr == "ff42bd"){ // 7 valueColor+="7"; ledOn(); } else if( hexIr == "ff4ab5"){ // 8 valueColor+="8"; ledOn(); } else if( hexIr == "ff52ad"){ // 9 valueColor+="9"; ledOn(); } } } } // show when data received void ledOn (){ digitalWrite(LED_PIN,HIGH); delay(20); digitalWrite(LED_PIN,LOW); }
En matériel il nous faut :
– 1 arduino
– 1 capteur infrarouge VS1838B
– 1 led rgb KY-016 (option)
– 1 led et sa résistance (option)
– 1 télécommande
J’ai utilisé une led rgb KY-016 pour montrer ce que l’on peut faire avec un capteur infrarouge, ici récupérer une information donnée par la télécommande et l’utiliser dans notre programme.
Le but du programme, j’ai 3 boutons, 1 bouton pour la led rouge,1 pour la led verte etc …
Avec les chiffres je vais définir la valeur à envoyer à la led avec le pwm et je valide avec un bouton.
Pour le cablage la branche 1 de l’infrarouge est le signal reçu branché sur le pin 11 de l’arduino, la branche 2 le gnd et la branche 3 le 5V.
Pour la led rgb, rouge pin 6, vert pin 5, bleu pin 4 et pour ma led de visualisation du signal au pin 7.
Pour le code j’utilise la bibliothèque IRremote et je défini les pin que je vais utiliser.
J’ai défini des variables en string pour le mode (couleur), la valeur de la couleur et la valeur du signal reçu.
On appelle ensuite IRrecv irrecv(RECV_PIN); et decode_results results; pour notre capteur IR.
Partie setup on active la réception de l’infrarouge avec irrecv.enableIRIn(); et on définit nos pin led en output.
Dans la boucle la première condition s’active quand on reçoit un signal IR, je transforme la valeur reçue en valeur hexadécimale et je la stocke dans hexIr.
Le programme se prépare au nouveau signal avec irrecv.resume(); mais nous allons traiter les informations reçues à la suite.
En premier, le code IR reçu correspond t’il à un mode (couleur), rouge, vert, ou bleu et si oui je donne la valeur correspondante à la variable mode.
Si on enregistre un signal du bouton Entrer pour moi j’applique le code couleur enregistré (un peu plus loin dans le code) à la couleur du mode précédemment enregistré.
J’ai un code pour le bouton stop de ma télécommande ou je remet à 0 mes led rgb.
Ensuite j’ai la partie traitement des numéros de ma télécommande et je ne peux que traiter ses valeurs avec un mode ( rouge, vert ou bleu).
Je lie chaque bouton à une valeur et je la concaténé sur valueColor et cette valeur sera appliquée au moment du bouton entrer(plus haut).
Et la petite fonction ledOn est utilisé pour allumer la led de visualisation un court instant quand on capte un signal valide.
Télécharger le code :
– Tuto Ir Remote RGB
– Librairie Ir : IRremote by shirriff ( ou https://github.com/z3t0/Arduino-IRremote )
N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram , twitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc…
Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.
Merci les RetroGeeker et RetroGeekeuse