#define PIR_PIN 13 // Pin sensor PIR
#define LED_PIN 2 // Pin LED (digunakan internal LED ESP32)
unsigned long lastMotionTime = 0; // Waktu terakhir mendeteksi gerakan
const unsigned long lightTimeout = 5000; // Waktu LED tetap menyala setelah gerakan (dalam milidetik)
void setup() {
pinMode(PIR_PIN, INPUT); // Sensor PIR sebagai input
pinMode(LED_PIN, OUTPUT); // LED sebagai output
Serial.begin(115200); // Debugging melalui serial monitor
Serial.println("Sistem Lampu Otomatis siap!");
}
void loop() {
int motionDetected = digitalRead(PIR_PIN); // Membaca status PIR
if (motionDetected == HIGH) {
Serial.println("Gerakan terdeteksi!");
digitalWrite(LED_PIN, HIGH); // Nyalakan LED
lastMotionTime = millis(); // Perbarui waktu terakhir mendeteksi gerakan
}
// Matikan LED jika tidak ada gerakan selama periode tertentu
if (millis() - lastMotionTime > lightTimeout) {
digitalWrite(LED_PIN, LOW);
}
delay(100); // Mengurangi pembacaan terlalu sering
}