#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#include <Time.h>
#include <Timealarms>
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 RTC;
int buzzer = 11;
Servo myservo;
int relay = 2;
void setup ()
lcd.init();
lcd.backlight();
RTC.begin();
pinMode(relay, OUTPUT);
digitalWrite(relay, 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();
}
Serial.begin(9600) ;
// Atur waktu]
setTime(5, 59, 20, 11, 10, 2022);
//Tentukan alarm
Alarm.alarmRepeat (5, 59, 25, MatikanLampu) ; // 01:00:00 setiap hari
Alarm.alarmRepeat (18, 0, 0, HidupkanLaampu) ; // 01:15:00 setiap hari
Alarm.alarmRepeat (dowSaturday, 5,59, 30. Olahraga); //01:20:00 setiap hari sabtu
Alarm.timerRepeat(8, Istirahat) ; //Sekali 8 detik
Alarm.timerOnce (10, Ceksekali) ; //Sekali setelah 10 detik
}
void loop()
{
tampilankanJam ();
Alarm.delay (1000) ;// Tunggu satu detik
DateTime baca_rtc = RTC.now();
baca_waktu();
int alarm_jam = 12;
int alarm_menit = 3;
// Fungsi untuk mematikan Lampu
void MatikanLampu()
{
Serial.println("Lampu dimatikan") ;
}
void HidupkanLampu()
{
Serial.println("Lampu dihidupkan") ;
}
// Untuk menguji timerOnce () pada hari sabtu void Olahrga ()
{
Serial.println("Siap-siap Olahraga");
}
// Fungsi yang dijalankan per 20 detik void Istirahat ()
{
Serial.println("Sudahkah Istirahat sebentar");
}
// Dijalankan sekali void Ceksekali ()
{
Serial.println("Hanya dijalnkan sekali") ;
}
void tampilkan Jam()
{
tampil2digiit(hour())
Serial.print()(':');
tampil2digit(minute());
Serial.print(':');
tampil2digit Second());
Serial. println();
}
void tampil2digit (int bil)
{
}
if (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) {
tone(buzzer, 1000);
myservo.write(180); //katup terbuka
digitalWrite(relay, HIGH);
delay(3000); //1000
while (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) {
baca_waktu();
noTone(buzzer);
myservo.write(0); //katup tertutup
digitalWrite(relay, LOW);
(bil <10 && bil >= 0)
Serial.print('0') ;
Serial.print (bil) ;
}
}
else {
noTone(buzzer);
myservo.write(0); //katup tertutup
digitalWrite(relay, LOW);
}
delay(10);
}
void baca_waktu()
{
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());
}