#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RTClib.h>
int led = 13;
int pirpin = 12;
int pirState = LOW;
int val = 0;
int ldrpin = 7;
int lampuPin = 9;
// Inisialisasi objek RTC
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
// Mengaktifkan koneksi I2C
Wire.begin();
// Memastikan RTC telah terhubung
if (! rtc.begin()) {
Serial.println("Modul RTC tidak terdeteksi");
while (1);
}
// Mengaktifkan output pada pin lampu
pinMode(lampuPin, OUTPUT);
pinMode(led, OUTPUT);
pinMode(pirpin, INPUT);
pinMode(ldrpin, INPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("LAMPU OTOMATIS");
lcd.setCursor(2,1);
lcd.print("Adzra Gladis");
delay(2000);
lcd.clear();
}
void loop() {
// Membaca waktu saat ini
DateTime now = rtc.now();
int hour = now.hour();
int minute = now.minute();
int second = now.second();
// Menyalakan lampu dari jam 21:49:00 sampai 21:52:00
if (hour == 21 && minute == 49 && second == 0) {
digitalWrite(lampuPin, HIGH);
} else if (hour == 21 && minute == 52 && second == 0) {
digitalWrite(lampuPin, LOW);
}
Serial.print("JAM DIGITAL : ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.println(" WIB.");
delay(2000);
val = digitalRead(pirpin);
if(val == LOW && digitalRead(ldrpin) == LOW){
digitalWrite(led, LOW);
lcd.setCursor(0,0);
lcd.print("Ruangan Terang");
if(pirState == HIGH){
lcd.setCursor(0,1);
lcd.print("Tidak Ada Gerakan");
pirState = LOW;
}
} else if(val == HIGH && digitalRead(ldrpin) == LOW){
digitalWrite(led, LOW);
lcd.setCursor(0,0);
lcd.print("Ruangan Terang");
if(pirState == LOW){
lcd.setCursor(0,1);
lcd.print("Ada Gerakan");
pirState = HIGH;
}
} else if(val == HIGH && digitalRead(ldrpin) == HIGH){
digitalWrite(led, HIGH);
lcd.setCursor(0,0);
lcd.print("Ruangan Redup");
if(pirState == LOW){
lcd.setCursor(0,1);
lcd.print("Ada Gerakan");
pirState = HIGH;
}
}
}