bonjour/bonsoir
je suis en train de créer un ventilateur commandé par télécommande ir pour l'été
le principe est simple, 4 relais, 1 qui allume ou éteint le ventilateur, et 3 relais qui s'occupe des différentes vitesses
pour le coté hardware, tout va bien, mais niveau software, je suis confronté à un petit souci...
d'abord, voici le code, certainement pas opti et moche, mais osef
#include <IRremote.h> //j'utilise une version modifiée de la librairie, car elle est au départ incompatible avec la fonction tone à cause des Timers
#define power 16756815 //code décimal ir du bouton power de la télécommande
#define fleche_bas 16758855 // code décimal flèche bas
#define fleche_haut 16742535 // code décimal flèche haut
int speaker = 2; // speaker qui nous dira si la commande est passée
int RELAIS1 = 3; // pin relais vitesse 1
int RELAIS2 = 4; // pin relais vitesse 2
int RELAIS3 = 5; //pin relais vitesse 3
int RELAISPRINCIPAL = 7; // pin relais sectionneur
int RECV_PIN = 11; // pin IR
//variables états des relais
int etatrelais1; //sectionneur vitesse 1
int etatrelais2; // sectionneur vitesse 2
int etatrelais3; // sectionneur vitesse 3
int etatrelaisprincipal; // sectionneur principal
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(RELAIS1, OUTPUT);
pinMode(RELAIS2, OUTPUT);
pinMode(RELAIS3, OUTPUT);
pinMode(RELAISPRINCIPAL, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value);
switch(results.value)
{
case power: //gestion du sectionneur principal
digitalWrite(RELAISPRINCIPAL, HIGH);
//on joue une mélodie pour l'allumage du ventilo
tone(speaker, 700, 250);
delay(250);
tone(speaker, 800, 250);
delay(250);
tone(speaker, 900, 250);
delay(250);
tone(speaker, 1000, 250);
delay(250);
etatrelaisprincipal = 1;
Serial.println("debug"); //uniquement pour le débug du programme
Serial.println(etatrelaisprincipal); // la aussi, débug
break;
case fleche_bas:
Serial.print("flechebas");
break;
default :
{
}
break;
}
irrecv.resume();
}
}
le souci, c'est que dès que j'envoie la commande power ou flèche bas, les instructions s'exécutes, mais après ça toute les valeurs IR tombent vers 0, comment si la télécommande n'envoyait plus rien.
le serial :
16756815 // envoie commande power
debug // le programme s'exécute
1 // il renvoie la valeur de etatrelaisprincipal
0
0 // mais la plus rien
0
je ne comprends pas pourquoi il fait ça. si quelqu'un à la réponse, je serais heureux de la connaitre
merci d'avance