#include "RTClib.h"
#include "time.h"
/*
* In questa struct verranno salvate le informazioni sull'ora corrente in formato "human readable"
* per info e dettagli https://www.cplusplus.com/reference/ctime/tm/
*
* I mesi sono rappresentati nel range 0-11, l'anno parte dal 1900
*/
struct tm t;
RTC_DS1307 rtc;
void setup () {
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
}
}
void loop () {
time_t now = rtc.now().unixtime();
t = *localtime(&now);
Serial.print("Epoch time: ");
Serial.println(now);
static int counter;
// Char array in cui andremo a concatenare tutto
char buffer[80];
/* Fai riferimento alla pagina https://www.cplusplus.com/reference/cstdio/printf/
* per l'elenco completo di tutti i "format specifier characters".
* N.B. L'unico che non funziona con Arduino è quello per le variabili float
*/
snprintf(buffer, sizeof(buffer),
"Riga n° % 4d; Data: %02d/%02d/%04d; Ora: %02d:%02d:%02d", counter++,
t.tm_mday, t.tm_mon+1, t.tm_year+1900, t.tm_hour, t.tm_min, t.tm_sec);
/* N.B.
* Nella stringa del formato ho messo due tipi diversi di specificatore a lunghezza fissa
* % 4d significa che la stringa sarà costruita a partire da un int, lunga 4 caratteri con lo spazio
* usato come leading padding. %02d invece sarà lungo 2 caratteri, con lo 0 leading padding.
*/
Serial.println(buffer);
delay(1000);
}