#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
byte
tick = 0,
detik = 0,
menit = 0,
jam = 0,
flag = 0,
siram = 0;
int relayPin = 2;
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD dan ukuran 16x2
void setup() {
// Inisialisasi komunikasi dengan modul RTC
rtc.begin();
lcd.begin(16, 2); // Inisialisasi LCD
lcd.init();
lcd.backlight();
// Atur waktu RTC jika belum diset
if (!rtc.begin()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Set pin relay sebagai OUTPUT
pinMode(relayPin, OUTPUT);
}
void loop() {
// Baca waktu saat ini dari RTC
DateTime now = rtc.now();
// Cek kondisi waktu dan atur pengendalian LED
if (now.hour() == 7 && now.minute() == 26 && now.second() == 0)
{
// Nyalakan LISTRIK
flag = 1;
lcd.clear();
siram++;
}
if (now.hour() == 7 && now.minute() == 27 && now.second() == 0)
{
flag = 0;
digitalWrite(relayPin, LOW);
lcd.clear();
}
if (now.hour() == 7 && now.minute() == 28 && now.second() == 0)
{
// Nyalakan LISTRIK
flag = 1;
lcd.clear();
siram++;
}
if (now.hour() == 7 && now.minute() == 29 && now.second() == 0)
{
flag = 0;
digitalWrite(relayPin, LOW);
lcd.clear();
}
if (flag == 1)
{
digitalWrite(relayPin, HIGH);
lcd.setCursor(15, 0);
lcd.print(siram);
}
lcd.setCursor(0, 0);
lcd.print("Jam: ");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
lcd.setCursor(0, 1);
lcd.print("Tanggal: ");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year() % 100);
delay (1000);
}