Progetto Serra Automatica

Dal post #64:
motoreAvanti() è una chiamata alla funzione motoreAvanti
MotoreAvanti è una variabile booleana locale
MotoreAvanti() non è niente


comprendere meglio cosa succede dentro un blocco if.... Ho scritto questa istruzione

else if (s == 3  &&  MotoreAvanti){

t = millis();
s = 4;
 }
else if (s == 4  &&  millis() - t >= 3000) {
if (fcS_Aperto)  errore = 0;
else {
errore = 1;
HC12.println("guasto fcS");
errore = 1;
s = 0;
   }
 }
}


Il problema mi sembrano le "situazioni" previste dalla logica, che secondo me dovrebbero essere queste:

Se fcs chiuso E fcd chiuso:
    guasto entrambi finecorsa chiusi
    stato 99

Se motoreavanti E motore indietro:
    guasto doppio azionamento
    stato 99

-----------------------------------------
Situazione 0:  (attesa partenza motore)
  evento: motore avanti
  azione: salva tempo, stato 1
  
  evento:motore indietro
  azione: salva tempo, stato 2
-----------------------------------------
Situazione 1: (motore partito verso destra)
  evento: timeout 3 sec E fcs chiuso
  azione: guasto fcs non apre, stato 99

  evento: timeout 60 sec E fcd aperto
  azione: guasto fcd non chiude, stato 99

  evento: motore fermo
  azione: stato 0
-----------------------------------------
Situazione 2: (motore partito verso sinistra)
  evento: timeout 3 sec E fcd chiuso
  azione: guasto fcd non apre, stato 99

  evento: timeout 60 sec E fcs aperto
  azione: guasto fcs non chiude, stato 99

  evento: motore fermo
  azione: stato 0
-----------------------------------------
Situazione 99: (rilevato guasto)
  azione: errore = 1
-----------------------------------------