#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Tone.h>
// Crea un'istanza della classe LiquidCrystal_I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
Tone beep;
void setup() {
// Inizializza la comunicazione I2C
Wire.begin();
// Inizializza il modulo RTC
rtc.begin();
// Inizializza il display LCD
lcd.init();
lcd.backlight();
// Inizializza il pin di uscita per il suono
pinMode(9, OUTPUT);
beep.begin(9);
}
void loop() {
// Ottieni la data e l'ora correnti dal modulo RTC
DateTime now = rtc.now();
// Crea una stringa per la data e l'ora
char timeStr[20];
sprintf(timeStr, " %02d/%02d/%04d", now.day(), now.month(), now.year());
// Visualizza l'ora e la data sul display LCD
lcd.setCursor(0, 0);
lcd.print(timeStr);
char timeStr_[20];
sprintf(timeStr_, " %02d:%02d:%02d", now.hour(), now.minute(), now.second());
// Visualizza l'ora e la data sul display LCD
lcd.setCursor(0, 1);
lcd.print(timeStr_);
// Verifica se è ora di suonare
if (now.hour() >= 6 && now.hour() < 22) {
if (now.minute() == 0) {
beep.play(1000, 500);
} else if (now.minute() == 30) {
beep.play(1000, 250);
beep.play(1000, 250);
}
}
// Attendi 1 secondo
delay(1000);
}