Ciao, ho 2 problemi che riscontro.. uno non so come fare per accendere e spegnere un relè in base al ora voluta.. il secondo ho provato a fare un if/else con il valore della temperatura ma non credo mi funzioni in quanto uso:
Nell'esempio che hai postato non c'è nulla che riguarda il controlo dell'ora, solo la stampa di quanto letto dall'rtc su lcd. Manca anche la parte di lettura del sensore DHT22. Nello spezone di codice inserito prima (fuori dai tag code) leggi l'umidità non la temperatura
... aggiungo a quanto già detto da "fabpolli", sai vero che le righe: RTC.adjust(DateTime(DATE, TIME)); non fanno altro che impostare, ogni volta, la data/ora del RTC alla data/ora in cui hai COMPILATO il programma? ... con tutto quello che ne consegue ... :
Infatti la " RTC.adjust(DateTime(DATE, TIME));" va usata solo la prima volta che si fa partire il sistema per settare automaticamente data e ora con quella corrente sul pc, ovvero data e ora di compilazione, poi quella riga va commentata e ricaricato il codice, se non si fa così ad ogni avvio di Arduino l'RTC viene sempre riportato a quella data e ora.
ok fino li sono a posto però ora non so come sono i comandi per dire a tal ora accendi il relè e spegnilo. non trovo i comandi o dei esempi. Ora dallo sketch dovrei solamente dire alle 7 accendi e alle 22 spegni tutto qua..
Se ( (ora == 7) e (minuti == 0) ) allora accendi ... non mi sembra complicato ... hai gli appositi metodi che ti ritonano l'ora corrente, i minuti correnti ed anche i secondi (ma quelli NON usarli, rischi che l'IF avviene un secondo dopo e non lo prendi). Idem per spegnere.
Basta creare un codice di tempo: secondi+minuti100+ore10000. Ad es.: 15:22m:45s darà il codice 152245. A quel punto è fare fare semplicemente un if(codiceDellOraCorrente>220000) Spegni();
Più precisamente, dovrebbe essere if(codiceDellOraCorrente>=220000) Spegni();
Datman:
Basta creare un codice di tempo: secondi+minuti100+ore10000. Ad es.: 15:22m:45s darà il codice 152245. A quel punto è fare fare semplicemente un if(codiceDellOraCorrente>220000) Spegni();
Ripeto che lascerei fuori i secondi ...
... NON sai cosa fa i loop() e, se malaguratamente (... non dovrebbe mai, ma ... :) dura più di 1 secondo ... il codice rischia di non beccare mai il momento esatto. Tanto per il suo scopo, ore/minuti sono più che sufficenti.
Guglielmo
P.S.: Se comunque ti piace fare quei calcoli, per uniformità con il "resto del mondo" :D, si fa minuti60 e ore3600 così da avere un numero univoco che rappresenta i secondi del giorno (da 0 a 86399)
Puoi anche usare ore e minuti. Comunque, se guardi bene, uso >=, non ==, quindi lo spegnimento avviene anche se sfugge l'orario esatto!
E' evidente che, se volessi fare il conteggio in secondi, dovrei fare in quel modo, ma chi me lo fa fare??? Moltiplicando per 10000 e per 100 ore e minuti e sommando i secondi (se uso anche i secondi, altrimenti basta moltiplicare le ore per 100 e sommare i minuti) rimangono immediatamente leggibili e possono essere impostati in fase di programmazione senza prendere la calcolatrice!
Ciao scusate ma non la capisco proprio questa come funziona ci ho provato ma nulla.. Ci sarebbe una buona anima che me lo scriverebbe nello sketch? (non per pigrizia mia.. ma sto impazzendo) vi sarei veramente riconoscenti... grazie
Cosa è 'hour' ? e cosa è 'minute' ? ...
... i metodi che ritornano le varie parti della data/ora si chiamano (... nel tuo codice) now.hour(), now.minute() ... le hai anche usate e NON sai a cosa servono ? ? ? :o :o :o
Guglielmo
P.S.: Ovviemente 'now' deve essere creato/aggiornato come hai fatto: DateTime now = RTC.now();
ok credevo servissero solo per impostare l'ora io avevo letto il codice enableAlarm() e credevo si usasse quello o altri comandi. proverò.. grazie mille e scusa il disturbo
cncduino:
ok credevo servissero solo per impostare l'ora
... ma no, le hai usate proprio TU per stampare l'ora, quindi le hai usate in un contesto diverso dall'impostare l'ora.
cncduino:
... proverò.. grazie mille e scusa il disturbo
Ma quale distrubo?
... invece, quello che NON capisco, è perché non approfondisci le cose che usi. Stai usado la libreria RTC, stai usando alcuni dei suoi metodi, perché non ti metti con calma a capire cosa fanno e come sfruttarli?