#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
DateTime baca_rtc;
int buzzer=11;
Servo myservo;
int relay_1=2;
int relay_2=3;
void setup() {
lcd.init();
lcd.backlight();
RTC.begin();
pinMode(relay_1,OUTPUT);
digitalWrite(relay_1,LOW); //relay mati
pinMode(relay_2,OUTPUT);
digitalWrite(relay_2,LOW); //relay mati
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,LOW);
myservo.attach(10);
myservo.write(0); //tutup katup
lcd.setCursor(4,0);
lcd.print("Project");
lcd.setCursor(2,1);
lcd.print("Jam Digital");
delay(1000);
lcd.clear();
}
void loop() {
Display_RTC();
int alarm_jam_1=12;
int alarm_menit_1=29;
int alarm_jam_2=12;
int alarm_menit_2=30;
if(baca_rtc.hour() == alarm_jam_1 && baca_rtc.minute() == alarm_menit_1){
tone(buzzer,1000);
myservo.write(180); //katup terbuka
digitalWrite(relay_1,HIGH);
delay(3000); //1000
while(baca_rtc.hour() == alarm_jam_1 && baca_rtc.minute() == alarm_menit_1) {
Display_RTC();
noTone(buzzer);
myservo.write(0); //katup tertutup
digitalWrite(relay_1,LOW);
}
}
else if(baca_rtc.hour() == alarm_jam_2 && baca_rtc.minute() == alarm_menit_2){
tone(buzzer,1000);
myservo.write(180); //katup terbuka
digitalWrite(relay_2,HIGH);
delay(3000); //1000
while(baca_rtc.hour() == alarm_jam_2 && baca_rtc.minute() == alarm_menit_2) {
Display_RTC();
noTone(buzzer);
myservo.write(0); //katup tertutup
digitalWrite(relay_2,LOW);
}
}
else {
noTone(buzzer);
myservo.write(0); //katup tertutup
digitalWrite(relay_1,LOW);
digitalWrite(relay_2,LOW);
}
delay(10);
}
void Display_RTC(){
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(" ");
}