Puedes ver transiciones 0 a 1 o 1 a 0
Veamos cuando pasa de 0 a 1
Aunque le faltan cosas esto es una buena aproximación
#define PIN 2
bool estado, estadoAnterior = false;
int contador = 0;
unsigned long tiempo;
void setup() {}
void loop() {
estado = digitalRead(PIN);
if (!estado && estadoAnterior) {
contador++;
}
estadoAnterior = estado;
if (millis()-tiempo > 1000UL) { // uso UL para que sepa que son unsigned long
Serial.println(contador); // falta calcular las RPM
contador = 0;
}
}