Il mio sketch, non é altro che un timer di lettura RTC che permette all’ acquario di avere luci e pompa ossigeno automatiche in base agli eventi orari.
Ora, funziona tutto perfettamente, anche troppo, nel senso che alla sezione //LASER, la luce, può accendersi dalle 7 del mattino alle 23, come da programma. Ma lo fa sempre... Il laser viene acceso per 15 secondi, si, ma ininterrottamente anche dopo le 23 e fino alle 7, cosa che non dovrebbe fare, visto che gli è imposto un “if ore>=7 && ore<=23”
Capisco che dicendogli “&& ore<=23” lui dice “dalle 00 alle 23 è minore di 23, perciò lo accendo”.
Allora come fare per dirgli che dalle 00 alle 7 non deve accendere?
Vi allego la parte del codice incriminata:
//LASER
if (sss>1 && sss<26 && hhh >= 7 && hhh<=23) {analogWrite(11,(sss*10));}
else if (sss>25) {analogWrite (11,0);}
Ciao Gianluca,
Innanzitutto grazie per la risposta, infatti, se hhh deve essere >= a 7, perché non esclude da 00 a 06, e fa accendere lo stesso analogic(11) ?
Da lì non si capisce. Bisogna vedere il resto...
L'hardware è corretto?
Se fai pinMode(11, OUTPUT); nel setup() (ma non serve per il PWM) e digitalWrite (11, LOW); che fa l'uscita?
Posso postare tutto il listato, nn c’è problema, o solo una parte più estesa se serve a risolvere.
Ma ci sono altre espressioni molto simili, ma non danno problemi... boh
Quali sono quelle simili che funzionano?
N.B.: per regola, i listati vanno riportati tra i tag CODE, facendo uso del tasto </> in alto a sinistra in "reply" o in "modify"
Datman:
Perché? Se i secondi sono maggiori di 25, spegne sempre... a meno che 0 significhi acceso e 255 significhi spento...
Peró, stavo pensando, se il problema fosse Else.. non dovrebbero accendersi mai (nè dalle 7 alle 23 né dalle 00 alle 7), e sì, 255=acceso e 0=spento...
Il problema è che non definisci l'uscita per sss<=25 al di fuori degli orari tra le 7 e le 23. Non dovrebbe, però, restare acceso ininterrottamente, ma solo per 26 secondi ogni minuto.
hhh>=7 && hhh<=23 è una condizione vera dalle 7.00.00 alle 23.59.59, quindi dalle 7 a mezzanotte (meno un secondo).