Si ça ne marche pas, j'ai une dernière idée : peut-être que le code tel qu'il est va trop vite pour la bibli en charge de lire les codes reçus. On pourra ajouter une temporisation au niveau des lectures if (RCEP.decode(&RIR))
je vien de mettre ton code!
quand j appuis la led rouge (par exemple) s'allume mais ne s'etteint plus du tout!
aucune valeur ne s'inscrit de la touche 3 (qui sert normalement a stop la led) sur le moniteur!
" hello world
Eta : 0
valeur: 1086279855
Eta : 1
(et sa defile comme sa tout le temps) ![]()
j'ais essayer de mettre la condition "if (RCEP.decode(&RIR))" apres la ligne "Serial.println(etat);" dand le void loup!
mais sa donne pareil la led s'allume mais ne s'eteint plus et aucune donner pour la touche 3! dans le serial!
sa devient compliquer!! :o
Peux-tu remplacer les
Serial.println(valeur);
par des
Serial.println(valeur,HEX);
La LED rouge, c'est la 3 ?
Est-ce qu'il affiche des points "." ?
Quand tu indiques ce que dit la console, tu peux faire directement un copier / Coller, c'est plus rapide et plus précis. Il faut aussi que tu me dises quelle(s) touche(s) de la télécommande produit l'effet que tu recopies, pour que je comprenne bien le comportement du code...
JE n'arrive pas a faire de copier coller dans le moniteur!
sa se met bien en bleu mais j'ais beau faire un clic droit mais je n'est pas le "copier"
du coup dans le moniteur sa me met avant de rien touché "eta 0 "
et des que j'appuis sur la touche 2 (led rouge exemple) sa me met " valeu,HEX1086296175
etat:2 "
la led donc s'allume mais ne s'eteint plus ! et je peut appuyer sur les autres touche (touche 2 led verte)ou
(touche3 arret des deux led ) mais rien ne se passe dans le moniteur!aucune valeur ne s'affiche
j'ais reflechis a une astuce qui pourrait peut etre me convenir! ![]()
a toi de me dire si ses bon!
comme dans l'ouverture et la fermeture de mon portail je vais installer deux interrupteur de fin course,
un pour le portail fermé et l 'autre pour l'ouverture!
au lieu de me soucié de mettre des " delay" qui nous bloque le programme!
pourquoi je ne me servirais pas des intérupteur de fin de course pour dire a mes leds de stopper??
sa ferais:
appuis sur la touche 2
le verin electrique sort (led verte)
appui sur l'interupteur de fin coursse portail fermer
arret du verin (led verte eteinte)
appuis sur la touche 1
le verin electrique rentre (led rouge)
appuis sur le capteur de fin de course en ouverture du portail
arrêt du verin (led rouge eteinte)
appuis sur la touche 3
arret du verin dans les deux sens (ouverture fermeture,led rouge et verte)
j'ais modifié le code en enlevant les delay et du coup la touche 3 fonctionne bien !elle éteint bien la led verte ou rouge quand est sont allumer!
mais forcement ou je bute et que sa ne compile pas
ses en insserent dans le code
les deux interrupteurs!!!! si tu peut jetez un oeil!!
![]()
[code]
#include <IRremote.h>
const int BUTTON_1= 1; //capteur de fin de course porte ouverte entre gnd et d1
const int BUTTON_2= 2 //capteur de fin de course porte fermer entre gnd et d2
;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);
pinMode(BP,INPUT_PULLUP);// valide la résistance de pullup interne au microcontroleur
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
}
void loop()
{
ETAT_BP=digitalRead(BP);
if (ETAT_BP,2==APPUI)
digitalWrite(LED3,LOW);
}
{
ETA_BP=digitalRead(BP);
if (ETA_BP,3==APPUI)
digitalWrite(LED4,LOW);
}
{
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 == 0x40bf00ff) // 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(LED4,LOW);
digitalWrite(LED3, HIGH); // La LED verte s'allume
}
if (RIR.value == 0x40bf50af) //telecomande differente
{
digitalWrite(LED3, HIGH);
}
if (RIR.value == 0x40bf906f) //telecommande differente
{
digitalWrite(LED4, HIGH);
}
if (RIR.value == 0x7ba) // si touche 2 actionnée
{
digitalWrite(LED3,LOW);
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
}
RCEP.resume(); // Réception de la prochaine valeur
}
}
[/code]
Tu as des erreurs ici:
const int BUTTON_2= 2 //capteur de fin de course porte fermer entre gnd et d2
;int IR = 11; // Récepteur IR en broche 11
doit être :
const int BUTTON_2= 2; //capteur de fin de course porte fermer entre gnd et d2
int IR = 11; // Récepteur IR en broche 11
et ici:
ETAT_BP=digitalRead(BP);
if (ETAT_BP,2==APPUI)
au lieu de
int ETAT_BP_2=digitalRead(BP);
if (ETAT_BP_2==APPUI)
et même chose pour le bouton 3
Il faut que tu définisses "APPUI" par exemple en mettant dans l'entête du code:
#define APPUI 1
Attention à l'utilisation de la broche 1 qui sert à la liaison série avec le PC. Préfère la 5 par exemple.
Dans l'autre code, tu peux tester en ôtant les 'else' devant les tests 'if (millis() - chrono > dureeEtatx)' pour voir si ça va mieux, et si ça ne va pas mieux décommenter en plus la dernière ligne 'RCEP.resume();'
Il faut ôter les accolades successives dans la loop :
}
{
à deux endroits au niveau de la lecture des boutons.
Les capteurs de fin de course vont rester appuyés ? Comme l'un est "portail fermé (PF)" et l'autre "portail ouvert (PO)", il y a 3 cas :
- Portail fermé : fin de course PF enfoncé, PO relâché
- Portail ouvert : PF relâché, PO enfoncé
- Portail en mouvement : PF et PO relâchés
Du coup, il faudrait peut-être réfléchir à organiser le code autour de ces états et réfléchir aux touches de la télécommande qui doivent être écoutées dans chacun de ces états.
(je réfléchis en même temps que j'écris)
bonjour le sept ![]()
je ne travaille pas cette apres midi ![]()
je te remercie! je regarde sa avec les deux codes et je te retiens au courant si sa marche je monte sa ce weekend!
y en a marre de l'ouvrire a la main !!
![]()
Si ça marche : dépêche-toi de l'installer, je passe pour l'apéro !!!
j'ais essayer dans lever les erreurs que tu a dit ,mais j'ais encore une erreur ![]()
" exit status 1
'BP' was not declared in this scope
je te post se que j 'ais corriger
[code]
#define APPUI 1
#include <IRremote.h>
const int BUTTON_5= 5; //capteur de fin de course porte ouverte entre gnd et d3
const int BUTTON_6= 6; //capteur de fin de course porte fermer entre gnd et d2
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);
pinMode(BP,INPUT_PULLUP);// valide la résistance de pullup interne au microcontroleur
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
}
void loop()
{
int ETAT_BP_5=digitalRead(BP);
if (ETAT_BP,2==APPUI)
digitalWrite(LED3,LOW);
}
{
int ETAT_BP_6=digitalRead(BP);
if (ETA_BP,3==APPUI)
digitalWrite(LED4,LOW);
}
{
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 == 0x40bf00ff) // 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(LED4,LOW);
digitalWrite(LED3, HIGH); // La LED verte s'allume
}
if (RIR.value == 0x40bf50af) //telecomande differente
{
digitalWrite(LED3, HIGH);
}
if (RIR.value == 0x40bf906f) //telecommande differente
{
digitalWrite(LED4, HIGH);
}
if (RIR.value == 0x7ba) // si touche 2 actionnée
{
digitalWrite(LED3,LOW);
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
}
RCEP.resume(); // Réception de la prochaine valeur
}
}
[/code]
aucun soucis pour l'apero
![]()
le probleme chez moi c'est pas de rentrer pour prendre l'apero!!!
mais dans ressortir !!!
![]()
Tu as des erreurs dans la lecture de tes boutons.
Voici :
#include <IRremote.h>
#define APPUI 1
const int BUTTON_5 = 5; //capteur de fin de course porte ouverte entre gnd et d3
const int BUTTON_6 = 6; //capteur de fin de course porte fermer entre gnd et d2
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);
pinMode(BUTTON_5, INPUT_PULLUP); // valide la résistance de pullup interne au microcontroleur
pinMode(BUTTON_6, INPUT_PULLUP); // valide la résistance de pullup interne au microcontroleur
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
}
void loop()
{
int ETAT_BP_5 = digitalRead(BUTTON_5);
if (ETAT_BP_2 == APPUI) digitalWrite(LED3, LOW);
int ETAT_BP_6 = digitalRead(BUTTON_6);
if (ETA_BP_6 == APPUI) digitalWrite(LED4, LOW);
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 == 0x40bf00ff) // 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(LED4, LOW);
digitalWrite(LED3, HIGH); // La LED verte s'allume
}
if (RIR.value == 0x40bf50af) //telecomande differente
{
digitalWrite(LED3, HIGH);
}
if (RIR.value == 0x40bf906f) //telecommande differente
{
digitalWrite(LED4, HIGH);
}
if (RIR.value == 0x7ba) // si touche 2 actionnée
{
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
}
RCEP.resume(); // Réception de la prochaine valeur
}
}
petit compte rendu ![]()
bon je crois que le diable nous suis!!!
sa compile bien mais aucune leds ne s'allume quand j'appuis sur les touches des leds ![]()
j'ais ouvert le moniteur serie et les valeur s'affiche quand j' appuis sur les touches!!!
je comprend plus rien la! ![]()
dans le doute j'ais remis le code que l'on a fait enssemble ou les leds ne s'eteignais pas et ce code la marche!
les leds s'allume bien!!!
une idéé?
je te reposte le code si tu vois un probleme!
[code]
#include <IRremote.h>
#define APPUI 1
const int BUTTON_5 = 5; //capteur de fin de course porte ouverte entre gnd et d5
const int BUTTON_6 = 6; //capteur de fin de course porte fermer entre gnd et d6
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(115200); // 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);
pinMode(BUTTON_5, INPUT_PULLUP); // valide la résistance de pullup interne au microcontroleur
pinMode(BUTTON_6, INPUT_PULLUP); // valide la résistance de pullup interne au microcontroleur
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
}
void loop()
{
int ETAT_BP_5 = digitalRead(BUTTON_5);
if (ETAT_BP_5 == APPUI) digitalWrite(LED3, LOW);
int ETAT_BP_6 = digitalRead(BUTTON_6);
if (ETAT_BP_6 == APPUI) digitalWrite(LED4, LOW);
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 == 0x40bf00ff) // 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(LED4, LOW);
digitalWrite(LED3, HIGH); // La LED verte s'allume
}
if (RIR.value == 0x40bf50af) //telecomande differente
{
digitalWrite(LED3, HIGH);
}
if (RIR.value == 0x40bf906f) //telecommande differente
{
digitalWrite(LED4, HIGH);
}
if (RIR.value == 0x7ba) // si touche 2 actionnée
{
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH); // La LED Rouge s'allume
}
RCEP.resume(); // Réception de la prochaine valeur
}
}
[/code]
C'est normal que les LED ne s'allument pas lorsque tu appuies sur les boutons, puisqu'on leur dit de s'éteindre : il faut mettre HIGH au lieu de LOW:
int ETAT_BP_5 = digitalRead(BUTTON_5);
if (ETAT_BP_5 == APPUI) digitalWrite(LED3, HIGH);
int ETAT_BP_6 = digitalRead(BUTTON_6);
if (ETAT_BP_6 == APPUI) digitalWrite(LED4, HIGH);
j'ais fait des essais quand meme et sa fonctionne mais pas comme je penssais!!!
sa fonctionne a l'enver!
mais je vais essayer de m'en arrenger ![]()
parceque du coup y en a un fermer et l'autre ouvert ![]()
mais j' ais les interrupteurs pour sa je me lance et je te retien au courant! 8) ![]()
haaa! desoler !
ta repondu avant moi ![]()
oui j'ais vue ![]()
claas900:
j'ais fait des essais quand meme et sa fonctionne mais pas comme je penssais!!!sa fonctionne a l'enver!
mais je vais essayer de m'en arrenger
parceque du coup y en a un fermer et l'autre ouvert
mais j' ais les interrupteurs pour sa je me lance et je te retien au courant! 8)
Je ne comprends pas ce que tu veux dire par "à l'envers". Si c'est pas les bonnes LEDs, il suffti d'échanger 3 et 4. Explique ...