#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long previousMillis = 0;
const long interval = 2000;
RTC_DS1307 RTC;
int buzzer = 13;
void setup() {
lcd.init();
lcd.backlight();
RTC.begin();
pinMode(buzzer, OUTPUT);
lcd.setCursor(4, 0);
lcd.print("Project");
lcd.setCursor(3, 1);
lcd.print("ASMI X DEDE");
delay(5000);
lcd.clear();
pinMode(13, OUTPUT);
}
void loop() {
DateTime baca_rtc = RTC.now();
tampilan_utama();
int alarm_jam=15;
int alarm_menit=02;
if (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit){
tone(buzzer,500);
lcd.setCursor(0, 0);
lcd.print("Bangun Woi`");
delay(3000);
lcd.clear();
while (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit)
{
tampilan_utama();
noTone(buzzer);
}
}
else
{
noTone(buzzer);
}
}
void tampilan_utama()
{
DateTime baca_rtc = RTC.now();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(baca_rtc.year());
lcd.print("/");
lcd.print(baca_rtc.month());
lcd.print(".");
lcd.print(baca_rtc.day());
lcd.setCursor(0,1);
lcd.print("TIME");
lcd.print(baca_rtc.hour());
lcd.print("/");
lcd.print(baca_rtc.minute());
lcd.print("/");
lcd.print(baca_rtc.second());
lcd.print(".");
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayRight();
delay(200);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Project");
lcd.setCursor(0, 1);
lcd.print("ASMI X DEDE");
delay(500);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
tone(13, 1000, 500);
delay(500);
noTone(13);
}
}