#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x3F dgn 0x27 jika alamat I2C LCD jika berbeda
const int pinRelay = 5;
const int pinTombol = 6;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
lcd.init();
lcd.backlight();
// hilangkan tanda "//" dibawah jika ingin mengatur RTC
//rtc.adjust(DateTime(2024, 11, 8, 21, 24, 00));
pinMode(pinTombol, INPUT_PULLUP);
pinMode(pinRelay, OUTPUT);
}
void loop() {
DateTime now = rtc.now();
if (digitalRead(pinTombol) == LOW) {
digitalWrite(pinRelay, HIGH); // Nyalakan relay jika tombol ditekan
} else {
// Nyalakan relay setiap hari pukul 22:00
if (now.hour() == 22 && now.minute() >= 00 && now.minute() <= 01) {
digitalWrite(pinRelay, HIGH);
} else {
digitalWrite(pinRelay, LOW);
}}
// Tampilkan waktu dan status relay pada LCD
char timeString[16];
sprintf(timeString, "Waktu: %02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0, 0);
lcd.print(timeString);
lcd.setCursor(0, 1);
if (digitalRead(pinRelay) == HIGH) {
lcd.print("Relay: HIDUP");
} else {
lcd.print("Relay: MATI ");
}
delay(1000);
}