Noto ancora un paio di cose strane, ma siamo sulla strada giusta
- Continui ad avere commenti che dicono una cosa e azioni che ne fanno un'altra
setTime(19, 54, 00, 06, 3, 2019); //set the system time to 23h31m30s on 13Feb2009
che poi anche impostare il tempo tutte le volte non è che sia grande idea, lo RTC servirebbe per NON farlo...
interessante qui:
if (myTime >= OraAccensione && myTime < OraSpegnimento)
{
if (millis() - t1 > PAUSA && on == 0)
{
on = 1;
digitalWrite(relayVentolaUscita, HIGH);
digitalWrite(relayVentolaEntrata, HIGH);
} // Se è trascorsa la pausa, accende
if (millis() - t1 > PAUSA + DURATA)
{
on = 0;
t1 = millis();
digitalWrite(relayVentolaUscita, LOW);
digitalWrite(relayVentolaEntrata, LOW);
}
} // Se è trascorsa anche la durata, spegne e azzera.
a parte che se avessi un RTC non demanderei a millis() la gestione delle pause, ma ammetto che per semplicità ci starebbe, non è grande male
ma la prima if?
ti rendi conto che fai un test su un oggetto che NON aggiorni mai?
myTime è dichiarato, ma non è mai aggiornato, come pretenderesti che vada?
non parliamo poi della variabile byte 'on', che sarebbe parola riservata, infatti te la indica in arancione, chissa' cosa significa....
e poi di nuovo fai un test su mytime, che continua a non essere un orario valido
il fatto "strano" è che in sede di stampa ore minuti secondi, mese ed anno li usi correttamente, capirai che questo mi alimenta il dubbio su come stai scrivendo il tuo programma?
quindi, prova a pensare un attimo alla "logica" del programma, che a ma sembra molto zoppicante
qualche perplessità mi viene anche dal fatto che hai mezzo stravolto il programma per ripetere gli stessi errori della volta precedente...
io se devo riscrivere e so di aver sbagliato, per prima cosa elimino l'errore; capisci che mi viene il dubbio che tu non abbia ben capito cosa devi fare e stai "buttando dentro" righe di codice un po' alla carlona?
in sostanza:
piu' analisi, piu' pensiero e meno tastiera