Ricavare un INT relativo alle ore di un DS3231

Buona sera, mi dite quale è il codice per ricavare il valore numerico relativo alle ORE da un DS3231 ? Il listato è il della libreria DS1307RTC . Devo mettere il listato? Grazie.

Buonasera,

ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

Guglielmo

Detto questo ... cosa c'entra la libreria per il DS1307 con il DS3231?

Sono due moduli differenti e occorrono due librerie differenti ... TU che modulo hai ?

Guglielmo

Oops ho sbagliato anche questa volta, scusa !! La libreria del DS1307 mi funziona benissimo anche sul DS3231 almeno lo costato dal monitor seriale, ora a me servirebbe avere un riscontro di quando scatta l'ora cioè quando passa dall'1 alle 2, dalle 2 alle 3 ecc. non mi interessa interrupt, mi basterebbe trasformare il valore delle ore, penso sia una stringa (tm.Hour) in un valore numerico, da far vedere a Arduino. Grazie ciao.

Si, ma è sbagliato ... uno ha delle funizionalità e mette a disposzione della RAM salvata dalla batteria, l'altro NON ha detta RAM ed ha degli allarmi programmabili ... per ciascun modulo è bene usare la specifica libreria che mette a disposizione le giuste risorse.

Detto questo credo che tm.Hour sia già un numero, per l'esattezza un uint8_t quindi un byte ... almeno leggendo il sorgente della libreria ... :roll_eyes:

Piuttosto, tu QUALE libreria stai usando? metti un link che, per il DS1307, ce ne è un'infinità ...

Guglielmo

Lo è già un valore numerico, prova stampare tm.Hour + tm.Hour.
Stessa cosa per i mesi, giorni ecc.

La struttura è dichiarata in TimeLib.h di seguito un estratto:
typedef struct  { 
  uint8_t Second; 
  uint8_t Minute; 
  uint8_t Hour; 
  uint8_t Wday;   // day of week, sunday is day 1
  uint8_t Day;
  uint8_t Month; 
  uint8_t Year;   // offset from 1970; 
}

PS: sempre un attimo in ritardo

Se quella libreria funziona più o meno come la mia, (RTClib.h), dovrebbe avere qualcosa del genere:

 int horas = date.hour();

Controlla bene gli esempi nella tua libreria
Saluti.

static uint8_t lastHour;
if (tm.Hour != lastHour) {
  lastHour = tm.Hour;
  // etc etc etc
}

Grazie a tutti, ho risolto con: < int horas = tm.Hour; >
Ciao