Progetto Serra Automatica

@Claudio_FF un tuo aiuto per me è sempre gradito, ma a parte questo vorrei capire se qualcuno ha la gentilezza di dirmi dove e perché sbaglio, giusto per imparare e 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;
    }
  }
}

ho creato una variabile booleana fcS_Aperto

boolean fcS_Aperto = (digitalRead(fcS) == FC_OPEN_LEVEL);

e ho definito il finecorsa quando è aperto come HIGH

#define FC_OPEN_LEVEL   HIGH  //  livello a finecorsa aperto

Quindi quello che cerco di fare sarebbe :

  1. MotoreAvanti
  2. Comincio a contare il tempo
  3. Passati 3 secondi
  4. Se finecorsa Sinistro è aperto. errore = 0
    Altrimenti errore = 1

Considerando che quando Arduino aziona MotoreAvanti il finecorsa sinistro è chiuso...

Io penso che sbaglio nel dichiarare MotoreAvanti dentro else if perché questa è scritta come funzione "" MotoreAvanti() ""... Anche se Claudio_FF dice

Claudio_FF:
Post #64, sono due variabili booleane ottenute dalla lettura dei pin di comando dei relé del motore.

ma nel programma è scritta come

void MotoreAvanti()

C'è nessuno che può darmi una sua opinione ????