Bonjour,
Je porte sur MEGA 2560 un programme que j'avais réalisé sur Nano, et qui en synthèse active un relais lorsqu'un code est reçu par I.R.
Mon problème n'est pas de gérer les actions, ça c'est OK depuis longtemps sur mon programme Nano, mais aujourd'hui sur la MEGA le Moniteur Série m'envoie le message suivant:
The function decode(&results) is deprecated and may not work as expected! Just use decode() without a parameter and IrReceiver.decodedIRData.<fieldname> .
Mon code est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include <IRremote.h> // librairy permettant d'utiliser l'IR const int RECV_PIN = 49; IRrecv irrecv(RECV_PIN); decode_results results; if(irrecv.decode(&results)) { // Partie GESTION DE LA FONCTION "STOP" PAR TELECOMMANDE I.R. if((results.value==0x3F6)||(results.value==0xBF6)) { Serial.println("Appui sur Bouton STOP:"); Serial.println(results.value, HEX); //on active le relais 6 correspondant à la Fonction "STOP" digitalWrite(relai_STOP, HIGH); delay(500); digitalWrite(relai_STOP, LOW); strcpy(active_input, "STOP"); // on affecte donc la valeur "STOP" puisqu'on vient d'activer le Relai_STOP lcd.clear(); lcd.setCursor(5,1); // 5ème position pour centrer . Left second line (1 from 1-16, Ligne 1 from 0-1) lcd.print(active_input); // puis affiche la valeur de la chaine active_input en ligne du bas // il me semble qu'il faut réinitialiser "results.value" sinon l'instruction IF se répètera results.value==0x000; irrecv.resume(); } //Fin du IF pour la Fonction STOP
Je viens de vérifier et la version de la librairie IRremote.h qui est installée est la 3.3.0, càd la dernière semble-t-il.
(je n'ai pas de message à la compilation mais juste à l'exécution via le Moniteur Série) ---> ça ce serait surtout pour les nombreux programmes déjà écrits que je ne voudrais pas devoir adapter...
Sans doute est-il plus sage d'utiliser la nouvelle librairie pour mes nouveaux programmes...
J'ai suivi le Tuto ici:
et donc j'ai remplacé:
a). Toutes les occurrences de irrecv par IrReceiver
b). enlevé les occurrence de decode_results
c).remplacé les (decode_results *aResults) par un simple decode(); comme indiqué
d). Pour faire imprimer sur le Moniteur Série la valeur reçue, j'ai utilisé: Serial.println(IrReceiver.decodeIRData.decodeRawData, HEX);.
Mais à la compilation ça bugue:
C'est comme si IRrecv était toujours appelé et que "decodeIRData" n'était pas reconnu...or une recherche me montre qu'il n'y a pas de IRrecv actif (ils sont tous en commentaires).MEBT_v310:617:18: error: 'class IRrecv' has no member named 'decodeIRData'; did you mean 'decodedIRData'?
if((IrReceiver.decodeIRData.decodedRawData==0x3F6)||(IrReceiver.decodeIRData.decodedRawData==0xBF6))
Pourtant si c'est bien la librairie IRremote 3.3.0 qui est utilisée, le membre 'decodeIRData' devrait être reconnu non ?
Le compilateur me sort aussi comme message d'erreur:
mais le Gestionnaire de Bibliothèques ne me montre que IRremote en version 3.3.0 et ne me montre pas Arduino-IRremote-masterPlusieurs bibliothèque trouvées pour "IRremote.h"
Utilisé : C:\Users\Michel\Documents\Arduino\libraries\IRremote
Non utilisé : C:\Users\Michel\Documents\Arduino\libraries\Arduino-IRremote-master
Pouvez-vous éclairer ma lanterne ?
Merci
Partager