#define LED_OVRFLW 8
#define OpticalSensorPin 2
uint64_t triggerTime = 0;
void isr() {
static bool busy = false;
uint64_t oldTriggerTime = triggerTime;
triggerTime = micros();
if(busy) {
digitalWrite(LED_OVRFLW, 1); // allumer la LED de saturation
}
else {
busy = true;
digitalWrite(LED_BUILTIN, 1); // Plus on roule vite, plus la LED brille car temps "OFF" diminue
uint64_t dt = triggerTime - oldTriggerTime;
sei(); // dt has been stored, ISR can now be interrupted
Serial.println((uint32_t)dt);
Serial.flush();
digitalWrite(LED_BUILTIN, 0); // éteindre la LED
busy = false;
}
} // end of TIMER2_COMPA_vect
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(OpticalSensorPin, INPUT_PULLUP);
pinMode(LED_OVRFLW, OUTPUT);
digitalWrite(LED_BUILTIN, 0);
digitalWrite(LED_OVRFLW, 1);
while(!Serial)
{
; // wait for serial port to connect. Needed for native USB port only
}
attachInterrupt(digitalPinToInterrupt(OpticalSensorPin), isr, RISING);
Serial.println("Time_between_pulses_V1");
Serial.flush();
digitalWrite(LED_OVRFLW, 0);
} // end of setup
void loop()
{
} //end of loop