#include <Wire.h> // richiama la libreria Wire che riconosce la seriale I2C
#include <RTClib.h> // richiama la libreria dell'orologio RTC
#include <LiquidCrystal.h> // richiama la libreria del display lcd
RTC_DS1307 RTC;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // inizializzazione pin dedicati al display lcd
char buffer[10]; //
void setup() {
Serial.begin(9600); // Inizializza la stampa su schermo a 9600 baud rate
Wire.begin(); // Inizializza la comunicazione I2C
lcd.begin(16, 2); // INIZIALIZZO IL DISPLAY
RTC.begin(); // Inizializza il timer RTC
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
delay(500);
digitalWrite(12, HIGH);
//char buffer[10] = "";
if (!RTC.begin()) { // Se il RTC non sta funzionando o non è collegato,
Serial.println(" errore RTC "); delay(100); // scrive su stampa a schermo la scritta "RTC is NOT running!
abort();
}
if (! RTC.isrunning()) {
// Se il timer RTC esterno non è collegato o non funziona, scrive il messaggio
// poi scrive le impostazioni tempo e data dello sketch
Serial.println(" RTC is NOT running! "); delay(100);
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop(){
DateTime now = RTC.now();
lcd.clear();
lcd.setCursor(0,0);
//estrae dall'informazione "now" i dati di giorno, mese, anno.
sprintf(buffer, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.print( buffer);
lcd.setCursor(0,1);
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.print( buffer);
delay(1000);
}