je voudrais faire un bout de code qui permette de faire un yoyo journalier :
je voudais qu ' une pin passe de LOW a HIGH de 6 a 12 Heures , puis s' active de 12 H a 14 H ( donc etat LOW )
puis se desactive ( HIGH ) de 14 heure a minuit et s' active de minuit a 6 H .
j ' ai donc nommé une variable booleene bool RHC ;
et ecrit une fonction :
le probleme c ' est que ca print en boucle , je voudrais faire un truc qui print que quand ca change d' etat genre :
si etat precedent != etat actuel en me servant de la variable RHC , des idees ?
du coup voilà ce que j ' ai mis dans ma fonction :
void relaisHeureCreuse () {
static bool oldRHC = -1; // jamais lu
static unsigned long chrono = 0;
if ((oldRHC == -1) || (millis() - chrono > TIMER_V )) { // si jamais lue ou lue depuis plus de 30 secondes
if ( (RTC.heure() >= 0 && RTC.heure() < 6) || (RTC.heure() >= 12 && RTC.heure() < 14 )) {
RHC = true;
if (DEBUG) Serial.println (F(" relais heures creuses active" ));
}
else {
RHC = false;
if (DEBUG) Serial.println (F(" relais heures creuses desactive" ));
}
if ( oldRHC != RHC ) inverseRelais(23);
oldRHC = RHC;
chrono = millis();
}
}
il verifie toutes les 30 sec le creneau horaire , merci .
y a un warning a la compilation : boolean = -1 toujours vrai , mais c ' est justement ce qu on recherche a faire :
on verifie des le depart , puis toutes les 30 sec .
une fois la 1ere verif faite , oldRHC est soit a true soit a false .