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);
    }
}