Librairie IR et switch

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

perso, je testerai:
refaire un prg sans la musique et avec la librairie d'origine.
le truc de base...
si ok, tu voies pour étoffer ton prg

dfgh:
perso, je testerai:
refaire un prg sans la musique et avec la librairie d'origine.
le truc de base...
si ok, tu voies pour étoffer ton prg

merci, je testerai ça quand j'aurais le temps