#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
Servo myservo;
int buzzer = 11;
int relay1 = 2;
int relay2 = 3;
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
RTC.begin();
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
pinMode(relay1, OUTPUT);
digitalWrite(relay1, LOW);
pinMode(relay2, OUTPUT);
digitalWrite(relay2, LOW);
myservo.attach(10);
myservo.write(0);
lcd.setCursor(4,0);
lcd.print("Project");
lcd.setCursor(2,1);
lcd.print("Jam Digital");
delay(1000);
lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
DateTime baca_rtc = RTC.now();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(baca_rtc.day());
lcd.print("/");
lcd.print(baca_rtc.month());
lcd.print("/");
lcd.print(baca_rtc.year());
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());
int alarm_jam = 11;
int alarm_menit = 21;
if(baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) {
tone(buzzer, 200);
myservo.write(180);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
delay(5000);
while (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) {
noTone(buzzer);
myservo.write(0);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
baca_waktu();
}
}
else {
noTone(buzzer);
myservo.write(0);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
}
}
void baca_waktu() {
DateTime baca_rtc = RTC.now();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(baca_rtc.day());
lcd.print("/");
lcd.print(baca_rtc.month());
lcd.print("/");
lcd.print(baca_rtc.year());
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());
}