#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
const int buzzerPin = 27;
const int ledPin = 26;
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd (0x27,28,4);
void setup () {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime time = rtc.now();
lcd.setCursor(2,0);
lcd.print(time.timestamp(DateTime::TIMESTAMP_DATE));
lcd.setCursor(4,1);
lcd.print(time.timestamp(DateTime::TIMESTAMP_TIME));
checkAlarm(time);
delay(500);
}
void checkAlarm(DateTime currentTime) {
if (currentTime.hour() == 8 && currentTime.minute() == 0 && currentTime.second() == 0) {
triggerAlarm();
}
if (currentTime.hour() == 10 && currentTime.minute() == 29 && currentTime.second() == 20) {
triggerAlarm();
}
if (currentTime.hour() == 12 && currentTime.minute() == 44 && currentTime.second() == 0) {
triggerAlarm();
}
if (currentTime.hour() == 15 && currentTime.minute() == 14 && currentTime.second() == 0) {
triggerAlarm();
}
if (currentTime.hour() == 17 && currentTime.minute() == 49 && currentTime.second() == 0) {
triggerAlarm();
}
}
void triggerAlarm() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Alarm triggered!");
tone(buzzerPin, 1000);
digitalWrite(ledPin, HIGH);
delay (1000);
lcd.clear();
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
}