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.