#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD 20x4
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
// Definisi Pin
#define trigerPin 32
#define echoPin 35
#define pirPin 33
#define ldrPin 25
void setup() {
Serial.begin(115200);
pinMode(trigerPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT);
pinMode(ldrPin, INPUT);
LCD.init();
LCD.backlight();
// Tampilan Awal
LCD.setCursor(0, 0);
LCD.print("SYSTEM MONITORING");
delay(1000);
LCD.clear();
}
void loop() {
float jarak = readDistanceHCSR04();
int statusGerak = digitalRead(pirPin);
int nilaiCahaya = analogRead(ldrPin);
// --- TAMPILAN LCD ---
// Baris 0: Jarak
LCD.setCursor(0, 0);
LCD.print("Jarak : ");
LCD.print(jarak);
LCD.print(" cm ");
// Baris 1: Gerakan
LCD.setCursor(0, 1);
LCD.print("Gerak : ");
if (statusGerak == HIGH) {
LCD.print("ADA PERGERAKAN");
} else {
LCD.print("TIDAK ADA ");
}
// Baris 2: Cahaya
LCD.setCursor(0, 2);
LCD.print("Cahaya : ");
LCD.print(nilaiCahaya);
LCD.print(" ");
// Baris 3: Status Lingkungan (Logika Tambahan)
LCD.setCursor(0, 3);
if (nilaiCahaya < 1500) {
LCD.print("Kondisi: TERANG ");
} else {
LCD.print("Kondisi: GELAP ");
}
delay(500);
}
float readDistanceHCSR04() {
digitalWrite(trigerPin, LOW);
delayMicroseconds(2);
digitalWrite(trigerPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigerPin, LOW);
int duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2;
}