#include <LiquidCrystal_I2C.h>
//sensor PIR
#define pinPIR 3
//sensor LDR
#define pinLDR A0
//konstanta utk hitung lux
const float GAMMA = 0.7;
const float RL10 = 50;
//LED
#define pinLED 2
LiquidCrystal_I2C lcd(0x27, 20, 2);
void setup() {
//mode tiap PIN
pinMode(pinPIR, INPUT);
pinMode(pinLED, OUTPUT);
pinMode(pinLDR, INPUT);
//inisialisasi LCD
lcd.init();
lcd.backlight();
digitalWrite(pinLED, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
//deteksi apakah udah malam ?
int valueLDR= analogRead(A0);
float voltage = valueLDR / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd.setCursor(1, 0); // posisikan text di (kolom=1,baris=0)
//jika lux < 50 artinya gelap = malamg
if (lux < 50) {
//jika status MALAM
lcd.print("Status : Malam ");
//deteksi apakah ada gerakan ?
if (digitalRead(pinPIR) == HIGH) {
//jika gerakan dideteksi
lcd.setCursor(1, 1); // posisikan text di (kolom=1,baris=1)
lcd.print("ada PENYUSUP!");
//LED warning berkedip
digitalWrite(pinLED, HIGH); delay(500);
digitalWrite(pinLED, LOW); delay(500);
digitalWrite(pinLED, HIGH); delay(500);
digitalWrite(pinLED, LOW); delay(500);
} else
{
//jika tidak ada gerakan dideteksi
lcd.setCursor(1, 1); // posisikan text di (kolom=1,baris=1)
lcd.print(" Aman ");
digitalWrite(pinLED, LOW); // led warning off
}
} else
{
//jika status SIANG
lcd.print("Status : Siang ");
digitalWrite(pinLED, LOW); // led warning off
}
}