@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 :
- MotoreAvanti
- Comincio a contare il tempo
- Passati 3 secondi
- 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 ????