#define PIR_PIN 2
#define LED_PIN 8
volatile unsigned long tRise = 0, tLED = 0;
volatile bool eventFlag = false;
void onPirRise() {
tRise = micros();
digitalWrite(LED_PIN, HIGH);
tLED = micros();
eventFlag = true;
}
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.begin(115200);
attachInterrupt(digitalPinToInterrupt(PIR_PIN), onPirRise, RISING);
}
void loop() {
if (eventFlag) {
noInterrupts();
unsigned long dt = tLED - tRise;
eventFlag = false;
interrupts();
Serial.print("RESP_US=");
Serial.println(dt);
}
if (digitalRead(PIR_PIN) == LOW && digitalRead(LED_PIN) == HIGH) {
digitalWrite(LED_PIN, LOW);
}
}