Buongiorno ragazzi
Sto scrivendo una macchina a stati per la lavastoviglie (modellino) con Arduino
Il ciclo consiste di 27 step che qui non ho ancora scritto per intero:
bool runCycle() {
switch (currentCycleState) {
case 0: // initial drain
if (drainFunction() == true) {
currentCycleState = 1;
Serial.println(F("regen"));
}
break;
case 1: // initial regeneration
//implementare rigenerazione quando necessario
currentCycleState = 2;
fillFunctionState = 0; // ALWAYS RESET!!! fill, drain, regen, filter flush and resin washing states before calling them
Serial.println(F("prewash fill"));
break;
case 2: // prewash water fill
if (fillFunction() == true) {
stageStartTime = millis();
Serial.println(stageStartTime);
Serial.println(F("prewash"));
digitalWrite(washingPump, HIGH);
currentCycleState = 3;
Serial.println(cycleArray[progIndex].prewashDuration1);
}
break;
case 3: // prewash cold water
if (millis() - stageStartTime >= cycleArray[progIndex].prewashDuration1 * K) {
Serial.println(millis());
currentCycleState = 27;
}
case 27:
Serial.println(F("CYCLE FINISHED!"));
currentMacroState = CYCLEENDED;
break;
}
}
Il problema è che, arrivato allo step 2, il ciclo non prosegue allo step 3, ma sembra saltare direttamente al 27. Infatti su seriale mi stampa questo:
10:00:46.036 -> STARTING CYCLE
10:01:02.795 -> regen
10:01:02.795 -> prewash fill
10:02:06.631 -> Fill Routine Successful
10:02:06.631 -> 83398
10:02:06.671 -> prewash
10:02:06.671 -> 12
10:02:06.671 -> CYCLE FINISHED!
O, in altre parole, non mi stampa il millis() all'interno della funzione 3. Per quale motivo?