#define timeSeconds 10
const int led = 26; // GPIO 26 (you can change this to your desired pin)
const int motionSensor = 25; // GPIO 25 (you can change this to your desired pin)
unsigned long now = 0;
unsigned long lastTrigger = 0;
boolean startTimer = false;
void IRAM_ATTR detectsMovement() {
Serial.println("MOTION DETECTED!!!");
digitalWrite(led, HIGH);
startTimer = true;
lastTrigger = millis();
}
void setup() {
Serial.begin(115200);
pinMode(motionSensor, INPUT);
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
void loop() {
now = millis();
if (startTimer && (now - lastTrigger > (timeSeconds * 1000))) {
Serial.println("Motion stopped...");
digitalWrite(led, LOW);
startTimer = false;
}
}