#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
#include <RTClib.h> // Library untuk Real-time Clock
RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27,16,2); //Mengakses alamat LCD
const int TerasRelay = 5;
const int BalkonRelay = 6; // Pin untuk relay lampu teras dan balkon
const int KamarRelay = 7; // Pin untuk relay lampu ruang tengah dan kamar
const int RuangTengahRelay = 8;
void setup() {
lcd.init(); // Reset LCD
lcd.backlight(); // Menyalakan background LCD
rtc.begin(); // Mulai Real time clock
pinMode(TerasRelay, OUTPUT);
pinMode(BalkonRelay, OUTPUT);
pinMode(KamarRelay, OUTPUT);
pinMode(RuangTengahRelay, OUTPUT);
rtc.adjust(DateTime(2023, 10, 15, 5, 0, 0));
}
void loop() {
DateTime now = rtc.now();
lcd.setCursor(0, 0);
lcd.print("Jam : "); lcd.print(now.hour()); lcd.print(":"); lcd.print(now.minute()); lcd.print(":"); lcd.print(now.second());
lcd.setCursor(0,1); lcd.print("Tgl : "); lcd.print(now.day()); lcd.print("/"); lcd.print(now.month()); lcd.print("/"); lcd.print(now.year());
;
if (now.hour() >= 18 && now.minute() >= 0 && now.second() >=0 ||now.hour()<6) {
// Saat pukul 18.00
digitalWrite(TerasRelay, HIGH); //Nyalakan lampu Teras
digitalWrite(BalkonRelay, HIGH); // Nyalakan lampu balkon
} else if (now.hour() >= 6 && now.minute() >= 0) {
// Saat pukul 06.00
digitalWrite(TerasRelay, LOW);
digitalWrite(BalkonRelay, LOW); // Matikan lampu teras dan balkon
}
if (now.hour() >= 17 && now.minute() >= 0 && now.second() >= 0 || now.hour()<6) {
// Saat pukul 17.00
digitalWrite(RuangTengahRelay, HIGH); //Nyalakan lampu ruang tengah
digitalWrite(KamarRelay, HIGH); // Nyalakan lampu kamar
} else if (now.hour() >= 6 && now.minute() >= 0) {
// Saat pukul 06.00
digitalWrite(RuangTengahRelay, LOW); //Matikan lampu ruang tengah
digitalWrite(KamarRelay, LOW);// Matikan lampu kamar
}
}