// ESP32 PIR Motion Auto-Light / HC-SR501 + LED
// Arduino Core 3.0+ — ESP32 / ESP32-S2 / ESP32-S3
// Pin tanımları / Pin definitions
const int PIR_PIN = 4;
const int LED_PIN = 5;
// Hareket sonrası ışık süresi / Light on-time after motion
const unsigned long LIGHT_DURATION = 5000;
unsigned long lastMotionTime = 0;
bool isLightOn = false;
void setup() {
Serial.begin(115200);
delay(100);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.println("PIR Hareket Sensoru Hazirlaniyor...");
// HC-SR501 ısınma süresi / HC-SR501 warm-up delay
delay(2000);
Serial.println("Sistem hazir. Hareket bekleniyor...");
}
void loop() {
int motionState = digitalRead(PIR_PIN);
if (motionState == HIGH) {
if (!isLightOn) {
digitalWrite(LED_PIN, HIGH);
isLightOn = true;
Serial.println(">>> Hareket algilandi! Isik acildi.");
}
// Her tetikte sayacı sıfırla / Retrigger timer on motion
lastMotionTime = millis();
}
// Bloklamasız zamanlayıcı / Non-blocking timeout check
if (isLightOn && (millis() - lastMotionTime >= LIGHT_DURATION)) {
digitalWrite(LED_PIN, LOW);
isLightOn = false;
Serial.println("<<< Sure doldu. Isik kapatildi.");
}
delay(50);
}