Décodage infrarouge avec Arduino
#1
Posté 02 janvier 2013 - 01:23
Bonjour à tous,
Je possède une Arduino et j'ai acheté il y a pas longtemps un kit infrarouge pour Arduino, c'est celui-ci: http://www.robotshop.com/ca/kit-infrarouge-pour-arduino-2.html
J'ai téléchargé la bibliothèque, je l'ai inclu dans le dossier "Libraires", lors de la programation au début du code j'ajoute #include <IRremote.h>, j'ouvre les fichiers contenu dans le dossier de la bibliothèque (fichiers .h et .cpp) mais des erreurs se produisent à plusieurs endroits; cela fait 1mois que j'essaye d'arranger le problème mais je n'y arrive pas
J’aimerais savoir si il y a une autre façon plus facile de décoder l'infrarouge avec l'Arduino.
Je vous demande donc votre aide,
#2
Posté 02 janvier 2013 - 01:37
Deux choses :
- présente-toi dans la section appropriée pour que l'on sache un peu quelles sont tes compétences en électronique / informatique. Ca nous aidera à te guider dans la résolution de ton problème.
- donne nous les erreurs, ton code (ou le morceau pertinent), ... As-tu testé les exemples de la bibliothèque, s'il y en a ?
#3
Posté 02 janvier 2013 - 02:33
Mais il y a plusieurs centaines de lignes quand j'ouvre les fichiers .h et .cpp
J'ai essayé de supprimer la partie ou l'erreur se produisait mais encore d'autres erreurs plus loin de produisent...
Les exemples... ah les exemples: quand je les ouvre sans les fichiers .h et .cpp il y a une erreur mais si j'ouvre les fichiers des erreurs se produisent dans les fichiers ouverts comme je l'ai dis en haut...
Autant dire que c'est un travail de Titan !!
J'ai aussi essayé avec analogRead et digitalRead mais sa donne rien: Quand j'appuie sur le bouton de la télécommande la valeur ne change pas
C'est dommage car cette télécommande pourrait bien faire évoluer considérablement mon robot, le rendre plus évolutif (PS: Je fais un robot qui évite les obstacles un peu comme les robots aspirateurs...Avec la télécommande je voudrais faire un mode auto (il se débrouille tout seul) et un mode manuel (on appuie sur les boutons de la télécommande pour le faire bouger) et bien d'autres choses !! )
#4
Posté 02 janvier 2013 - 02:38
http://www.robot-maker.com/forum/topic/5741-projet-lexplorateur-un-robot-exploreur/page__view__findpost__p__35767
Pour le fichier h et cpp que tu as télécharger, tu n'as pas à y toucher.
Tu places juste le dossier dans le bon répertoire et c'est tout.
Mon site internet : http://ferdinandpiette.com/
#5
Posté 02 janvier 2013 - 02:53
Avec plein d'erreur.
J'ai importer le dossier de la bibliothèque "IRremote" dans le dossier "Libraries" du dossier arduino; C'est bien ce qu'il fallait faire ??
#6
Posté 02 janvier 2013 - 02:57
Mon site internet : http://ferdinandpiette.com/
#7
Posté 02 janvier 2013 - 03:00
Donc j'ai mis ce code:
#include <IRremote.h> #define DEBUG int IR_RECEIVER = 2; // Pin d'entrée du signal IR IRrecv ir_receiver(IR_RECEIVER); // Objet gérant la réception du signal decode_results result; // Résultat /* Initialisation */ void setup() { ir_receiver.enableIRIn(); // Active le module IR #ifdef DEBUG Serial.begin(9600); Serial.write("Mode Debug : On"); Serial.println(); #endif } /* Boucle principale */ void loop() { if (ir_receiver.decode(&result)) // Si le module IR reçoit des données { #ifdef DEBUG Serial.print("IR Remote Signal Detected : "); Serial.print(result.value, DEC); Serial.print(" | "); Serial.println(result.value, HEX); #endif ir_receiver.resume(); // Attend la prochaine valeur } }
et les messages d'erreur sont:
In file included from C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:13: C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\/IRremoteInt.h:87: error: 'uint8_t' does not name a type C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\/IRremoteInt.h:88: error: 'uint8_t' does not name a type C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\/IRremoteInt.h:89: error: 'uint8_t' does not name a type C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\/IRremoteInt.h:92: error: 'uint8_t' does not name a type C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:173: error: 'delayMicroseconds' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:181: error: 'delayMicroseconds' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:200: error: 'OUTPUT' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:200: error: 'pinMode' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:201: error: 'LOW' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:201: error: 'digitalWrite' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In constructor 'IRrecv::IRrecv(int)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:217: error: 'volatile struct irparams_t' has no member named 'recvpin' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:218: error: 'volatile struct irparams_t' has no member named 'blinkflag' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:241: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:242: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:246: error: 'volatile struct irparams_t' has no member named 'recvpin' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:246: error: 'INPUT' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:246: error: 'pinMode' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::blink13(int)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:252: error: 'volatile struct irparams_t' has no member named 'blinkflag' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:254: error: 'OUTPUT' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:254: error: 'pinMode' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In function 'void __vector_9()': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:268: error: 'volatile struct irparams_t' has no member named 'recvpin' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:268: error: 'digitalRead' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:271: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:273: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:275: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:284: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:285: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:287: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:293: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:295: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:300: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:302: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:310: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:321: error: 'volatile struct irparams_t' has no member named 'blinkflag' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:323: error: 'B00100000' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:326: error: 'B11011111' was not declared in this scope C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::resume()': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:332: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:333: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'int IRrecv::decode(decode_results*)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:343: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:344: error: 'volatile struct irparams_t' has no member named 'rcvstate' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeNEC(decode_results*)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:392: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:400: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeSony(decode_results*)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:433: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:443: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeRC5(decode_results*)': C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:518: error: 'volatile struct irparams_t' has no member named 'rawlen' C:\Users\Maison\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\IRremote\IRremote.cpp:529: error: 'volatile struct irparams_t' has no member named 'rawlen'
Voila beh vous avez de quoi lire
EDIT : rajout des basises [ code]
#8
Posté 02 janvier 2013 - 03:38
Ensuite, les types que tu utilises au début (decode_results particulièrement) me semblent bizarre ... Tu es sûr qu'ils existent dans ta library ?
De plus, on dirait qu'il manque l'inclusion vers les headers standards d'Arduino (voir les premières lignes d'erreur). Fais un code très basique, avec juste des instructions de base (pas d'appel aux fonctions de cet lib en particulier) et mets juste l'inclusion de IRemote. Si ça compile, c'est un problème dans l'utilisation des fonctions, sinon, c'est que la lib elle-même est bugguée (dans ce cas, il va falloir en chercher une autre ou rentrer dans le code et voir ce qui ne va pas).
#9
Posté 02 janvier 2013 - 05:09
J'ai utilisé la library sur le site où je l'ai acheté : http://www.robotshop.com/ca/kit-infrarouge-pour-arduino-2.html Il faut aller dans "Liens utiles"
Je suis débutant, j'ai eu mon arduino ce noël.
Pourriez vous me faire ce code "tres basique" svp (au cas ou) ??
#10
Posté 02 janvier 2013 - 05:31
Sympa comme cadeau de Noël ! J'espère que tu t'amuseras bien avec ^^
C'est normal que ça ne marche pas.
Arduino est passé à la version 1 il y a quelques mois. Il y a pas mal de choses qui ont changé, du coup il faut que tu télécharges la nouvelle version de la bibliothèque (la tienne date de 2009).
Rend-toi directement sur le site de l'auteur : https://github.com/s...rduino-IRremote
Avec cette nouvelle version, tu n'auras plus de problème (je viens de tester)
Mon site internet : http://ferdinandpiette.com/
#11
Posté 02 janvier 2013 - 05:45
et les erreurs sont:
[sketch_dec14a:6: error: 'IRrecv' does not name a type
sketch_dec14a:7: error: 'decode_results' does not name a type
sketch_dec14a.ino: In function 'void setup()':
sketch_dec14a:12: error: 'ir_receiver' was not declared in this scope
sketch_dec14a.ino: In function 'void loop()':
sketch_dec14a:24: error: 'ir_receiver' was not declared in this scope
sketch_dec14a:24: error: 'result' was not declared in this scope]
#12
Posté 02 janvier 2013 - 05:46
Et bien non ! Je viens de changer de biblothèque, je n'ai pas réussit à compiler le code; Une erreur se produit à cette ligne: [IRrecv ir_receiver(IR_RECEIVER); // Objet gérant la réception du signal]
et les erreurs sont:
[sketch_dec14a:6: error: 'IRrecv' does not name a type
sketch_dec14a:7: error: 'decode_results' does not name a type
sketch_dec14a.ino: In function 'void setup()':
sketch_dec14a:12: error: 'ir_receiver' was not declared in this scope
sketch_dec14a.ino: In function 'void loop()':
sketch_dec14a:24: error: 'ir_receiver' was not declared in this scope
sketch_dec14a:24: error: 'result' was not declared in this scope]
Pas normal, c'est comme si la bibliothèque n'était pas au bon endoit.
Il faut mettre le dossier IRremote contenant les sources dans le dossier {dossier_d_installation_d_arduino}/libraries
Puis redémarre l'IDE
Mon site internet : http://ferdinandpiette.com/
#13
Posté 02 janvier 2013 - 05:48
#14
Posté 02 janvier 2013 - 05:53
Mille merci pour votre aide !!!!!!!
#15
Posté 02 janvier 2013 - 06:31
Je voudrais que quand j'appuie sur le bouton POWER ma led s'allume, pour cela j'ai rajouté une variable "bouton". J'ai fais mon programme mais ma led reste allumée sans arret
PS: j'ai remarqué qu'il fallait appuier brèvement sur le bouton pour qu'il fonctionne correctement et que la valeur reste la même pour le même bouton, est-ce normal ??
#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(); #ifdef DEBUG Serial.begin(9600); Serial.write("Mode Debug : On"); Serial.println(); #endif pinMode(10, OUTPUT); } void loop() { digitalWrite(10, LOW); if (ir_receiver.decode(&result)) { #ifdef DEBUG bouton = result.value, DEC; #endif } if (bouton = 16580863) //16580863 est normalement la valeur du bouton POWER { digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); bouton = 0; } }
#16
Posté 02 janvier 2013 - 06:41
http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html
Dans l'esprit, ton code est bon, MAIS il y a un petit problème à cette ligne :
if (bouton = 16580863) //16580863 est normalement la valeur du bouton POWER
Une comparaison ne se fait pas avec l'opérateur = mais avec l'opérateur ==
Mon site internet : http://ferdinandpiette.com/
#17
Posté 02 janvier 2013 - 06:48
Cependant mon programme ne fonctionne pas même après la modification; la led reste éteinte sans arrêt
#18
Posté 02 janvier 2013 - 07:04
Cependant mon programme ne fonctionne pas même après la modification; la led reste éteinte sans arrêt
Parce que cette ligne ne veut rien dire
bouton = result.value, DEC;
- jojo3544 aime ceci
Mon site internet : http://ferdinandpiette.com/
#19
Posté 02 janvier 2013 - 07:05
#20
Posté 03 janvier 2013 - 10:38
J'ai encore besoin de votre aide...
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, et bouton reste à la valeur du bouton "7" donc la condition se répete indéfiniment, et sa reste bloqué sur cette condition; il faudrais remettre à zero bouton mais je n'y arrive pas même en mettant bouton = 0 ! Comment je pourrai faire ??
Voici mon code:
#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, DEC; } Serial.print(bouton); Serial.print("\n"); if(bouton == -2843 || bouton == 6375) { digitalWrite(12, HIGH); delay(500); digitalWrite(12, LOW); } }
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users