#define timeSeconds 3
const int led = 26;
const int motionSensor = 27;
// Timer: premenne
unsigned long now = millis();
unsigned long lastTrigger = 0;
boolean startTimer = false;
// funkcia prerusenia – prerusenie aktivovane, LED na HIGH a spustenie casovaca - TIMER
void IRAM_ATTR detectsMovement() {
Serial.println("MOTION DETECTED!!!");
digitalWrite(led, HIGH);
startTimer = true;
lastTrigger = millis();
}
void setup() {
Serial.begin(115200);
pinMode(motionSensor, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
void loop() {
now = millis(); //aktualny cas
// vypnutie LED za cas ulozeny v timeSeconds variable
if(startTimer && (now - lastTrigger > (timeSeconds*1000))) {
Serial.println("Motion stopped...");
digitalWrite(led, LOW);
startTimer = false;
}
}