lesept:
Tu devrais mettre les gros blocs de codes de la loop dans des fonctions
C'est pas précisément ce qu'il a fait?
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
cycleLavage = millis();
delay(1000);
washTheDishes(); //on fait la vaisselle
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
preRinse(); //on fait le pré rincage
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
finalRinse(); //on fait le rincage final
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
Pour ma part je m'y serais pris autrement:
Pour commencer j'aurais fait un timer à la seconde par ex basé sur ton RTC.
Sur la bse de ce timer, j'aurais fait des switch(étape) case: séparés, mais partageant la variable (étape).
Un pour le programme principal et un autre pour l'affichage et eventuellement un troisième pour les messages de déboguage sur la liaison série.
En faisant attention de ne pas avoir de code bloquant.
Ca a l'avantage de clarifier le programme.
En + tu peux faire les moyennes sur les lectures brutes et normaliser la valeur après la moyenne.