Bonjour,
J'avais développé il y a longtemps un programme (facilement trouvable sur le Web d'ailleurs) qui me sert à lire les codes des télécommandes.
Il utilisait la version 3.x de la librairie IRremote, et voici le programme:
// Filename: "Code tuto 10.3.ino"
/* Ceci est le code correspondant au Tuto 10.2 (càd complété avec la 2ème partie permettant l'allumage des LEDs)
sur la Réception IR sur Arduino, MAIS adapté à la télécommande de HiFiCollective envisagée pour le PERREAUX
et qui utilise les mêmes codes que ma Philips de BANDOL.
disponible sur Arduino TV, ici: http://arduinotvfr.livehost.fr/tutoriels/tutoriel-n102--interpretati.html
*/
#include <IRremote.h> // librairy permettant d'utiliser l'IR
const int RECV_PIN = 12; // car on relie la sortie du récepteur IR à la pin 12 de l'Arduino
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600); // Démarre le transmetteur série pour voir les résultats sur PC
irrecv.enableIRIn(); //
irrecv.blink13(true);
pinMode(3,OUTPUT); // c'est à cette Pin 3 qu'est reliée la 1ère LED de sortie
pinMode(4,OUTPUT); // c'est à cette Pin 4 qu'est reliée la 2ème LED de sortie
pinMode(5 ,OUTPUT); // c'est à cette Pin 5 qu'est reliée la 3ème LED de sortie
}
void loop() {
if (irrecv.decode(&results)) {
if (results.decode_type == NEC) {
Serial.print("NEC: "); // comme dans le Tuto 10 précédent, cela affiche la marque de la télécommande
} else if (results.decode_type == SONY) {
Serial.print("SONY: ");
} else if (results.decode_type == RC5) {
Serial.print("RC5: ");
} else if (results.decode_type == RC6) {
Serial.print("RC6: ");
} else if (results.decode_type == UNKNOWN) {
Serial.print("UNKNOWN: ");
}
Serial.println(results.value, HEX); // comme dans le tuto 10 précédent cela affiche en Hexadécimal ce que reçoit le capteur IR
// c'est dans cette section que l'on rajoute les lignes supplémentaires par rapport au Tuto 10 précédent
if(results.value==0xFD08F7){ // "FD08F7" correspond au Bouton 1 de la Télécommande DFRobot DFR0107 utilisée: les codes ont été trouvés au précédent Tuto 10
// au cours duquel il a lu la valeur reçue par le capteur IR quand il appuyait sur le Bouton 1
// ATTENION: bien mettre 0x devant FD087 car sinon l'Arduino ne comprends pas que c'est un code hexadécimal...
digitalWrite(3,HIGH); // si le capteur a reçu "FD08F7" càd si on a appuyé sur le Bouton 1, alors on allume la 1ère LED et on éteint les 2 autres LED.
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(100); // on introduit ici un délai de 100millisecondes pour que le code de la télécommande ne se répète pas plusieurs fois
}
if(results.value==0xFD8877){ // on répète le raisonnement avec la valeur "FD8877" correspondant au Bouton 2 de la Télécommande
// sans oublier le 0x devant le code pour que l'Arduino comprenne que c'est de l'hexadécimal...
digitalWrite(3,LOW); // et ici on décide d'allumer la LED 2 et d'éteindre les LED 1 et 3.
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(100); // on introduit ici un délai de 100millisecondes pour que le code de la télécommande ne se répète pas plusieurs fois
}
if(results.value==0xFD48B7){ // idem avec la valeur "FD48B7" correspondant au Bouton 3 de la Télécommande
digitalWrite(3,LOW); // on éteint LED 1
digitalWrite(4,LOW); // on éteint LED 2
digitalWrite(5,HIGH); // où on allume la LED 3
delay(100); // on introduit ici un délai de 100millisecondes pour que le code de la télécommande ne se répète pas plusieurs fois
}
irrecv.resume();
}}
Depuis j'ai changé de PC, donc dû réinstaller cette biblitohèque IRremote, et j'ai bien installé la v3.3.0 comme le montre la capture écran du Gestionnaire de Bibliothèques:
https://www.cjoint.com/c/OBjomtJIzC1
Or lorsque je compile ce programme il me sort l'erreur suivante:
Arduino : 1.8.19 (Windows 10), Carte : "Arduino Uno"
\\192.168.1.38\Datas\ELECTRONIQUE\ARDUINO\IR REMOTE CODES\Recevoir et lire une télécommande IR\Tutoriel n°10.2 complément Décodage IR sur Arduino\Code Tuto 10.3\Code_Tuto_10.3\Code_Tuto_10.3.ino: In function 'void setup()':
Code_Tuto_10.3:15:8: error: 'class IRrecv' has no member named 'blink13'
exit status 1
La documentation indique certaines modifications pour faire fonctionner les anciens programmes avec la version 4.x de IRremote, et une d'elles concerne bien "IRrecv", objet de l'erreur de compilation.
On y lit notamment:
** Just remove the line IRrecv IrReceiver(IR_RECEIVE_PIN); and/or IRsend IrSender; in your program, and replace all occurrences of IRrecv. or irrecv. with IrReceiver and replace all IRsend or irsend with IrSender.*
mais ici je suis bien avec la v3.3, donc normalement ça devrait fonctionner.
Quelqu'un a-t-il une explication ?
Merci