Wenn du nicht warten willst, heisst die Funktion digitalRead
static boolean prevState;
boolean curState = digitalRead(pin);
if (curState != prevState ) {
prevState = curState;
if (curState) {
// a change LOW -> HIGH has happened
// store micros
} else {
// a change HIGH ->LOW has happened
// calculate micros() - stored_micros
}
}
oder so ähnlich ...
pulseIn() macht nur Sinn, wenn du sowieso warten willst.
Edit: Ziemlich genau, wenn loop() schnell ist. Wenn es noch genauer sein soll, musst du Interrupts nehmen