#include <Arduino.h>
#define PIR_PIN 27
#define LED_PIN 2
uint8_t prev = LOW;
uint32_t trials = 0, minD = 0xFFFFFFFFUL, maxD = 0;
uint64_t sumD = 0;
void setup() {
pinMode(PIR_PIN, INPUT_PULLDOWN);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.begin(115200);
delay(250);
Serial.println("event,trial,detect_to_led_on_us,min_us,max_us,avg_us");
}
void loop() {
uint8_t s = digitalRead(PIR_PIN);
if (s == HIGH && prev == LOW) {
uint32_t t1 = micros();
digitalWrite(LED_PIN, HIGH);
uint32_t t2 = micros();
uint32_t d = t2 - t1;
trials++;
if (d < minD) minD = d;
if (d > maxD) maxD = d;
sumD += d;
uint32_t avg = (uint32_t)(sumD / trials);
Serial.print("ON,"); Serial.print(trials); Serial.print(",");
Serial.print(d); Serial.print(",");
Serial.print(minD); Serial.print(",");
Serial.print(maxD); Serial.print(",");
Serial.println(avg);
}
if (s == LOW && prev == HIGH) {
uint32_t t1 = micros();
digitalWrite(LED_PIN, LOW);
uint32_t t2 = micros();
uint32_t dOff = t2 - t1;
Serial.print("OFF,"); Serial.print(trials); Serial.print(",");
Serial.print(dOff); Serial.println(",0,0,0");
}
prev = s;
delay(1);
}