Salve ragazzi, per completare il mio primo progetto avrei bisogno di resettare il valore delle temperature MIN e MAX alle 23.59 e quindi ogni 24h. La difficoltà, nonostante abbia provato a cercare e scopiazzare dal web, è che non mi funziona il reset. In allegato lo sketch, qualcuno più esperto potrebbe indicarmi come e dove inserire l'eventuale soluzione?
antonio85:
Salve ragazzi, per completare il mio primo progetto avrei bisogno di resettare il valore delle temperature MIN e MAX alle 23.59 e quindi ogni 24h.
Diciamo che per essere più precisi lo resetterei alle 00:00, prima di leggere il valore corrente.
Ma per prima cosa premi Ctrl-T dentro all'IDE così ti riformatta decentemente il codice (e poi cerca di mantenere quel tipo di formattazione) per renderlo più leggibile.
Quindi togli "tempo = rtc.getTime();" da dentro Home (visto che non usi lì quella variabile) e mettilo dentro a Data() insieme al controllo della mezanotte, prima della lettura dei valori (non sapendo se hai delay o altri possibili rallentamenti, ho messo un margine di 5 secondi per il rilevamento della mezzanotte, vedi tu se modificarlo):
Perfetto! Al primo test sembra funzionare egregiamente, è proprio ciò di cui avevo bisogno. Adesso mi manca solo la soluzione per spegnere il display da 3.5" e poi potrò concludere questa prima parte del progetto.
Grazie 1000 DocDoc.
docdoc:
Quindi togli "tempo = rtc.getTime();" da dentro Home (visto che non usi lì quella variabile) e mettilo dentro a Data() insieme al controllo della mezanotte, prima della lettura dei valori (non sapendo se hai delay o altri possibili rallentamenti, ho messo un margine di 5 secondi per il rilevamento della mezzanotte, vedi tu se modificarlo):
Invece di testare l'orario preciso, che potrebbe saltare per qualche strano motivo, perchè non ti salvi in una variabile l'ora corrente e se l'ora nuova letta dall'rtc è minore resetti?
E' minore solo quando torna a zero allo scoccare della mezzanotte.
Anche se metti in sleep e risvegli ogni 2 ore, continua a funzionare perfettamente.
In questo modo resetti una volta sola e non continuamente finchè sei all'interno del range impostato e resetti anche se un domani ci saranno operazioni che magari richiedono più tempo di quello impostato (ad es. uno sleep per risparmiare batteria tra un operazione e l'altra).
Maurizio, grazie per la risposta. La mia idea è quella di mantenere il monitor delle condizioni ambientali sempre accesso. Lo scenario che descrivi non so se sia applicabile a questo mio bisogno ma potresti spiegarmi meglio cosa intendi per "strano motivo"? Adesso mi hai messo la pulce nell'orecchio e sono curioso.
Semplicemente un qualunque motivo attualmente non previsto
Qualcuno mi dirà, si, ma 5 o 10 secondi sono sufficienti per tutto. Ok, ma perchè rischiare?
Magari un domani ci aggiungi una comunicazione tcp/ip e questa si blocca in attesa di una risposta che non arriva finchè non va in timeout...
Se puoi scrivere un codice che non ha proprio questo problema, perchè non farlo?
Poi, ognuno è libero di scegliere la strada che preferisce.
Antonio85, il messaggio di Maurizio è scritto appena sopra al tuo, perciò è inutile riportarlo, tanto più in fondo e per intero! Io abbiamo appena letto!
Uno "strano motivo" è un imprevisto: se potessimo prevederlo, non sarebbe più tale! Siccome possiamo prevenire un malfunzionamento e con poco sforzo, però, facciamolo. È anche una buona abitudine per il futuro.
Perfetto ragazzi. Tutti i consigli sono ben accetti, il problema è che nel 99% non so esattamente di cosa si parli nel suddetti consigli. La mia esperienza in fatto di Arduino è praticamente nulla se paragonata alla vostra. In pratica ho tanto da imparare e di solito si impara dagli errori. Grazie per tutti i suggerimenti passati e futuri.