#define led_pin 26
#define motion_sensor 27
#define buzzer 25
unsigned long now;
volatile bool StartTime = false;
volatile unsigned long lastTrigger;
const unsigned long interval = 2 * 1000UL;
bool printMotion = false;
void ARDUINO_ISR_ATTR motionIsr()
{
lastTrigger = millis();
StartTime = true;
}
void setup()
{
Serial.begin(115200);
pinMode(led_pin, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
digitalWrite(led_pin, LOW);
pinMode(motion_sensor, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(motion_sensor), motionIsr, RISING);
}
void loop()
{
now = millis();
if (StartTime == true && !printMotion)
{
digitalWrite(buzzer, HIGH);
Serial.println("nagar bsdka aagya");
digitalWrite(led_pin, HIGH);
printMotion = true;
}
if (StartTime && (now - lastTrigger > interval))
{
Serial.println("Nagar gya");
digitalWrite(led_pin, LOW);
digitalWrite(buzzer, LOW);
printMotion = false;
StartTime = false;
}
}