Domanda:
Come ottenere l'ora e la data correnti in arduino senza fonte esterna?
Mohamed Mbarki
2016-12-28 23:50:08 UTC
view on stackexchange narkive permalink

Sto lavorando a un progetto che utilizza Arduino Uno e lo scudo della scheda SD. Vorrei memorizzare una variabile in un momento specifico ogni giorno nella scheda SD. Come posso ottenere l'ora corrente in Arduino? Qualsiasi aiuto sarebbe apprezzabile.

NOTA: Arduino NON è collegato al PC.

Tre risposte:
Nick Gammon
2016-12-29 08:41:29 UTC
view on stackexchange narkive permalink

senza fonte esterna

Non puoi. Arduino Uno non ha un orologio in tempo reale. Un orologio in tempo reale è solo qualcosa come $ 1 da eBay. Ad esempio DS1307 o DS3231. Ho trovato 5 x schede preassemblate con il chip dell'orologio, inclusi portabatteria, cristallo, chip e circuito stampato per $ 4,20 su eBay. Batterie non fornite.

Collegalo ai pin I2C (A4 e A5), imposta il tempo una volta utilizzando uno schizzo adatto, e poi sei pronto per rotolare.


Se vuoi semplicemente fare qualcosa ogni 24 ore (non necessariamente alle 9:36), puoi semplicemente usare millis per trovare quando è trascorso il numero appropriato di millisecondi. Il risultato di millis verrà eseguito all'incirca ogni 49 giorni, ma non devi preoccuparti di questo.

Tieni presente che questo non ti consente registra la data e l'ora, ma puoi registrare qualcosa (es. la temperatura) ogni giorno, dovresti solo sapere quando hai iniziato a registrare.

Dat Ha
2016-12-28 23:55:16 UTC
view on stackexchange narkive permalink

Un modo abbastanza accurato è usare la funzione millis () . Restituirà il valore in millisecondi dall'inizio di Arduino. Se avvii Arduino in un momento specifico, sarai in grado di calcolare la data e l'ora esatte.


Perché non un modulo esterno ?? Un RTC come il DS3231 in soli 5 $ e include un sensore di temperatura per te!

Fai attenzione che la funzione millis () si avvolga dopo circa 50 giorni.
@AndreCourchesne: http://arduino.stackexchange.com/questions/12587/how-can-i-handle-the-millis-rollover
Quindi cosa succede se si avvolge? Un programma orologio scritto correttamente non se ne preoccuperà.
Justas
2019-05-29 00:08:25 UTC
view on stackexchange narkive permalink

Una possibilità da considerare è utilizzare un timer plug-in 24 ore che controlla l'alimentazione a Uno.

Cioè qualcosa che assomigli a questo:

enter image description here

Il circuito sarebbe: presa CA -> Timer -> Caricatore USB -> Arduino

Puoi impostare il timer per spegnere l'alimentazione di Uno alle 23:30 e riaccenderla a mezzanotte.

In tale configurazione, millis () sarà l'ora dall'ultimo avvio di Uno, che di solito sarà l'ora dalla mezzanotte precedente.

Quando eseguire il debug, è possibile impostare l'ora di inizio a Uno su un valore diverso da mezzanotte.

Le avvertenze sono:

  • La tua situazione consente 30 minuti giornalieri (o qualsiasi altra gli incrementi del timer sono) tempi di inattività
  • Può tollerare cambiamenti del timer dovuti a interruzioni di corrente


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...