Version de bibliothèque et erreur de compilation

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

Bon en lisant la doc, il semble que les modifs majeures ont commencé avec la v3.1, donc je suppose que j'avais utilisé la v3.0.x lors de la mise au point de mes programmes....

Question résolue,

Merci

Merci d’avoir apporté la réponse à votre question

Idéalement vous devriez mettre à jour le code pour la dernière version de la bibliothèque pour être tranquille… :wink:

Oui vous avez raison, mais la dernière version de la bibliothèque IRremote change beaucoup de choses et impose des modifications importantes de mes programmes....
D'ailleurs l'auteur avait déjà imposé des modifs mportantes lors du passage de la V2.x à V3.x
Je cherche donc une alternative à la bibliothèque IRremote, car mes besoins sont basiques: juste recevoir les codes IR émis par une télécommande !

Par ailleurs j'ai résolu mon erreur de compilation, mais j'ai maintenant une erreur à l'upload, voir la capture écran:
https://www.cjoint.com/c/OBkjMXJYLc1

La carte est pourtant parfaitement reconnue par l'IDE Arduino (1.8.19). Quand on change de PC et qu'on doit tout réinstaller....

Des idées ???

  1. l'IDE offre la possibilité de copier/coller les rapports de compilation et/ou de téléchargement ("Recopier les messages d'erreurs" dans le haut de la fenêtre de sortie). Ce qui est plus facile à lire sur les petits écrans (des personnes répondent depuis leur téléphone).
  2. Lorsqu'on est obligé de mettre une image merci de la coller dans le message au lieu de l'héberger sur un site tiers. Ceci garantie que l'image en question ne disparaîtra pas un jour car elle est alors stockée sur le serveur du forum avec les messages.

il y a des exemple qui font grosso modo cela

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.