suite a mon précédent post avec votre aide j ais enfin réussi a installer la librairie IR remote
mon petit projet que j’essaye de faire c’est avec une led infrarouge de télévision
ses de commander deux leds avec deux telecomande différente !
je m’explique
en utilisant une touche(on) de une telecomande j’allume une led pendant 5 seconde
et avec une autre telecomande(touche ON differente une en NEC et l autre en RC5) je peut également allumer cette même led pendant le même temps
bien entendu pas en même temps!
puis en avec une autre touche OFF de la première telecomande j’allume l’autre led pendant 5secondes
et avec la deuxième toujours sur la touche OFF j’allume cette meme led pendant le même temps!
donc j ais essayer a plusieur reprise d’ecrire un petit programme tous seul en me servant des info un peu partout mais voilaa!!
forcement sa ne compile pas !! (sa m’aurais etonner du contraire)
je vous post se que j ais realisé et si vous pouvez jeté un coup d’oeil pour me dire se qui ne va
sa serais le top !
#include <boarddefs.h> //inclue les librairie
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
const byte LED3 =3; //led sur la pin3
const byte LED4 =4; //led sur la pin 4
int bright;
int before;
int RECV_PIN = 11; //ir sur la led 11
decode_results results;
void setup(){
before =0;
bright=255;
pinMode(out,OUTPUT);
void loop(){
if (irrecv.decode(&results)){
if (results.value==0xfb9, 12){ //si la valeur lue est fb9 (12bits)
}
if (results.value==0x40bf50af, 32){ //si la valeur lue est 40bf50af (32bits)
digitalWrite (LED3,HIGH); // alors on allime la led 3
delay (5100); //pendant 5seconde1
digitalWrite (LED,LOW); //et on l'eteint
if (results.value==0x7ba, 12){ //si la valeur lue est 7ba (12bits)
if (results.value==0x40bf906f, 32){ //si la valeur lue est 40bf906f (32bits)
digitalWrite (LED4,HIGH); //on allume la led 4
delay (5100); //pendant 5 seconde 1
digitalWrite (LED4,LOW); //puis on l'eteint
}
}
}
}
}
}
Hmmm ça fait beaucoup de bibliothèques pour allumer une led!
Des if qui s'emboîtent les uns dans les autres, ça sent pas super bon ^^
Quand tu es dans IDE, tu fais Ctrl+T, ça va organiser un peu mieux tout ça et faciliter la relecture.
if (results.value==0xfb9, 12){ //si la valeur lue est fb9 (12bits)
}
effectuait un test sur 12 bits???
Ce test là, tel qu’ecrit Revient à faireif (12){}ce qui est toujours vrai…mais bon avec les 2 accolades {} juste après de toutes façons vous ne faites rien… ce if ne sert donc strictement à rien et le compilateur va virer purement et simplement ce code
Par contre ça va mal se passer pour
if (results.value==0x40bf50af, 32){ //si la valeur lue est 40bf50af (32bits)
...
car ce test revient à faire tel qu’ecritif (32){...ce qui est toujours vrai…
il faut juste écrire
if (results.value == 0x40bf50af){ //si la valeur lue est 0x40bf50af
...
et idéalement vous auriez déclaré un
#define BOUTON_ON (0x40bf50af)
// ou alors
// const uint32_t BOUTON_ON = 0x40bf50af; // code bouton ON de a télécommande ...
et faire ensuite un
if (results.value == BOUTON_ON){ //si on appuie sur le bouton ON de la télécommande #1 (ou ce que ça représente je ne sais pas quel code vous avez là)
...
tous d’abord merci pour vos réponses,j’ais essayer de refaire un autre programme avec l 'aide
d’exemple qu il y a sur le net et j 'ais presque trouvé celui qui me convient mais je n’arrive
pas a le modifié !
quand je compile j’ais toujour l’erreur
"exit statut 1
expected ‘;’ before ‘digitalWrite’ "
j ais beau regarder mais je ne vois pas ou j’ais oublié le point virgule!!
voici le code:
merci d’avance.
#include <IRremote.h>
int IR = 11; // Récepteur IR en broche 11
const byte LED3 = 3; // led rouge en broche 3
const byte LED4 = 4; // led verte en broche 4
IRrecv RCEP(IR);
decode_results RIR; //
void setup()
{
Serial.begin(9600); // permet de vérifier sur le moniteur série si le code de la touche est le bon
// sinon cette ligne n'est pas nécessaire
RCEP.enableIRIn(); // Commencement de la réception
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
digitalWrite (LED3,LOW);
digitalWrite (LED4,LOW);
}
void loop()
{
if (RCEP.decode(&RIR)) // si il y a une réception sur le capteur
{
Serial.println(RIR.value, DEC); // vérification du code de la touche actionnée sur le moniteur série
// sinon cette ligne n'est pas nécessaire
if (RIR.value == 16738455) // si touche 0 actionnée
{
digitalWrite(LED3, LOW); // Les LED s'éteignent
digitalWrite(LED4, LOW);
}
if(RIR.value == 16724175) // si touche 1 actionnée
{
digitalWrite(LED3, HIGH); // La LED verte s'allume
delay (5100)
digitalWrite(LED3, LOW);
delay (500);
}
if(RIR.value == 16718055) // si touche 2 actionnée
{
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
}
RCEP.resume(); // Réception de la prochaine valeur
}
}
justement j’allais vous renvoyer un post en vous disant que j avais vue mon erreur!!
en regardant de plus prés et en relisant toute les lignes effectivement je me suis aperçu que j’ais oublié celle ci!!!
je vous poste le programme fini et fonctionne a merveille pour ceux ou celle a qui cela pourrait interésser!!
merci encore de vôtres aide et surtout de votre patience je me doute que pour des gens comme vous qualifié en
la matière nous les débutants faut ce les tartiné…!!
(j’ais enlever les delays a la fin de chaque bloc ses plus reactif )
#include <IRremote.h>
int IR = 11; // Récepteur IR en broche 11
const byte LED3 = 3; // led rouge en broche 3
const byte LED4 = 4; // led verte en broche 4
IRrecv RCEP(IR);
decode_results RIR; //
void setup()
{
Serial.begin(9600); // permet de vérifier sur le moniteur série si le code de la touche est le bon
// sinon cette ligne n'est pas nécessaire
RCEP.enableIRIn(); // Commencement de la réception
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
digitalWrite (LED3,LOW);
digitalWrite (LED4,LOW);
}
void loop()
{
if (RCEP.decode(&RIR)) // si il y a une réception sur le capteur
{
Serial.println(RIR.value, DEC); // vérification du code de la touche actionnée sur le moniteur série
// sinon cette ligne n'est pas nécessaire
if (RIR.value == 16738455) // si touche 0 actionnée
{
digitalWrite(LED3, LOW); // Les LED s'éteignent
digitalWrite(LED4, LOW);
}
if(RIR.value ==0xfb9) // si touche 1 actionnée
{
digitalWrite(LED3, HIGH); // La LED verte s'allume
delay (5100);
digitalWrite(LED3, LOW);
}
if(RIR.value ==0x40bf50af)
{
digitalWrite(LED3,HIGH);
delay (5100);
digitalWrite(LED3,LOW);
}
if(RIR.value ==0x40bf906f)
{
digitalWrite(LED4,HIGH);
delay (5100);
digitalWrite(LED4,LOW);
}
if(RIR.value ==0x7ba) // si touche 2 actionnée
{
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
delay (5100);
digitalWrite(LED4,LOW);
}
RCEP.resume(); // Réception de la prochaine valeur
}
}