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
-----------------------------------------
