Orologio con sveglia e lcd

Share

Ecco un esempio di codice Arduino per un orologio con sveglia e display LCD. Assicurati di avere una libreria LCD installata nel tuo ambiente di sviluppo Arduino.

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>

RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);

const int buzzerPin = 8; // Pin a cui è collegato il buzzer

void setup() {
  Serial.begin(9600);

  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  lcd.begin(16,2);
  lcd.backlight();
  lcd.print("Orologio con");
  lcd.setCursor(0, 1);
  lcd.print("sveglia Arduino");
  delay(2000);
  lcd.clear();
}

void loop() {
  DateTime now = rtc.now();

  lcd.setCursor(0, 0);
  lcd.print("Ora: " + String(now.hour()) + ":" + String(now.minute()) + ":" + String(now.second()));

  lcd.setCursor(0, 1);
  lcd.print("Data: " + String(now.day()) + "/" + String(now.month()) + "/" + String(now.year()));

  // Imposta l'orario di sveglia alle 08:00:00
  DateTime alarmTime(now.year(), now.month(), now.day(), 8, 0, 0);

  if (now == alarmTime) {
    attivaSveglia();
  }

  delay(1000);
}

void attivaSveglia() {
  lcd.clear();
  lcd.print("Sveglia attivata!");
  tone(buzzerPin, 1000, 2000); // Suona il buzzer per 2 secondi
  delay(5000); // Attendi 5 secondi prima di tornare all'orologio
  lcd.clear();
}

Questo codice utilizza un modulo RTC (Real Time Clock) DS3231 per tenere traccia dell’orario. Il display LCD mostra l’orario corrente e la data. Se l’orario corrente corrisponde all’orario di sveglia impostato (in questo caso, alle 8:00), attiverà la sveglia con un suono dal buzzer.