#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);
}
GND5VSDASCLSQWRTCDS1307+