// Membuat Variabel Baru
#define pinPIR1 5
#define pinPIR2 18
#define pinPIR3 19
#define pinLDR 21
#define pinRelay1 2
#define pinRelay2 23
#define pinRelay3 22
//
unsigned long lastMotionTime = 0;
unsigned long currentTime = 0;
unsigned long offDelay = 1 * 60 * 1000;
void setup() {
Serial.begin(115200);
pinMode(pinPIR1, INPUT);
pinMode(pinPIR2, INPUT);
pinMode(pinPIR3, INPUT);
pinMode(pinRelay1,OUTPUT);
pinMode(pinRelay2,OUTPUT);
pinMode(pinRelay3,OUTPUT);
}
void loop() {
// Pembacaan Sensor
float LDR_val = digitalRead(pinLDR);
int nilaiSwitch1 = digitalRead((pinPIR1));
int nilaiSwitch2 = digitalRead((pinPIR2));
int nilaiSwitch3 = digitalRead((pinPIR3));
currentTime = millis();
// Cek Variabel
Serial.print("Lux :");
Serial.println(LDR_val);
Serial.print("PIR 1 = ");
Serial.println(nilaiSwitch1);
Serial.print("PIR 2 = ");
Serial.println(nilaiSwitch2);
Serial.print("PIR 3 = ");
Serial.println(nilaiSwitch3);
//
// Rules Otomatisasi Lampu
if (LDR_val == 1){ // Kondisi Cahaya Gelap
if (nilaiSwitch1 == 1){
digitalWrite(pinRelay1, HIGH);
lastMotionTime = currentTime;
} else if (nilaiSwitch2 == 1){
digitalWrite(pinRelay2, HIGH);
lastMotionTime = currentTime;
} else if (nilaiSwitch3 == 1){
digitalWrite(pinRelay3, HIGH);
lastMotionTime = currentTime;
} else if (currentTime - lastMotionTime > offDelay) {
digitalWrite(pinRelay1, LOW);
digitalWrite(pinRelay2, LOW);
digitalWrite(pinRelay3, LOW);
}
} else { // Kondisi Cahaya Terang
digitalWrite(pinRelay1, LOW);
digitalWrite(pinRelay2, LOW);
digitalWrite(pinRelay3, LOW);
}
//
delay(1000); // this speeds up the simulation
}