const int ledPin = 27; // GPIO pin for LED
const int pirPin = 14; // GPIO pin for PIR Motion Sensor
const unsigned long timeout = 10000; // Time in milliseconds (10 seconds)
unsigned long lastMotionTime = 0; // Last time motion was detected
void IRAM_ATTR onMotionDetected() {
Serial.println("Motion detected! Turning on the LED.");
digitalWrite(ledPin, HIGH);
lastMotionTime = millis();
}
void setup() {
Serial.begin(115200); // Initialize serial communication
pinMode(pirPin, INPUT_PULLUP); // Set PIR sensor pin as input with pull-up resistor
pinMode(ledPin, OUTPUT); // Set LED pin as output
digitalWrite(ledPin, LOW); // Initialize LED as off
attachInterrupt(digitalPinToInterrupt(pirPin), onMotionDetected, FALLING); // Attach interrupt to PIR sensor
}
void loop() {
if (millis() - lastMotionTime > timeout) {
Serial.println("No motion detected. Turning off the LED.");
digitalWrite(ledPin, LOW);
}
}