const int PIR_PIN = 5;
const int LED_PIN = 12;
const int TIMER_DURATION = 5000;
volatile bool pirTriggered = false;
unsigned long startTime = 0;
void IRAM_ATTR pirInterrupt() {
pirTriggered = true;
}
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(PIR_PIN), pirInterrupt, RISING);
Serial.begin(9600);
Serial.println("PIR Sensor Timer");
}
void loop() {
if (pirTriggered) {
Serial.println("Motion detected....");
startTime = millis();
pirTriggered = false;
Serial.println("Timer started!");
digitalWrite(LED_PIN, HIGH);
Serial.print("Timer Value: ");
Serial.println(startTime);
}
if (startTime > 0 && millis() - startTime >= TIMER_DURATION) {
Serial.println("Timer expired!");
startTime = 0;
digitalWrite(LED_PIN, LOW);
}
}