#include <Wire.h>
#include <LiquidCrystal.h>
#include <RTClib.h>
RTC_DS3231 rtc;
const int buzzerPin = 13;
//SET ALARM
int AlarmHour=22;
int AlarmMinute=24;
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); // RS, E, D4, D5, D6, D7
void setup() {
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2);
if (!rtc.begin()) {
lcd.print("RTC not found!");
while (1);
}
}
void loop() {
DateTime now = rtc.now();
// Display time on LCD
lcd.setCursor(0, 0);
lcd.print("TIME: ");
if (now.hour() < 10) {
lcd.print("0"); // Print a space to clear the previous digit
}
lcd.print(now.hour(), DEC);
lcd.print(':');
if (now.minute() < 10) {
lcd.print("0"); // Print a space to clear the previous digit
}
lcd.print(now.minute(), DEC);
lcd.print(':');
if (now.second() < 10) {
lcd.print("0"); // Print a space to clear the previous digit
}
lcd.print(now.second(), DEC);
lcd.setCursor(0, 1);
lcd.print("ALARM: ");
if (AlarmHour < 10) {
lcd.print("0"); // Print a space to clear the previous digit
}
lcd.print(AlarmHour, DEC);
lcd.print(":");
if (AlarmMinute < 10) {
lcd.print("0"); // Print a space to clear the previous digit
}
lcd.print(AlarmMinute, DEC);
// Check if alarm time matches current time
if (now.hour() == AlarmHour && now.minute() == AlarmMinute && now.second() == 0) {
triggerAlarm();
}
delay(1000);
}
void triggerAlarm() {
// Function to trigger alarm
tone(buzzerPin, 1000); // Set buzzer frequency
delay(1500); // Buzz for 2 second
noTone(buzzerPin); // Turn off buzzer
delay(1000);
tone(buzzerPin, 1000); // Set buzzer frequency
delay(1500); // Buzz for 2 second
noTone(buzzerPin); // Turn off buzzer
delay(1000);
tone(buzzerPin, 1000); // Set buzzer frequency
delay(1500); // Buzz for 2 second
noTone(buzzerPin); // Turn off buzzer
}