[SOLUCIONADO] while{} en void loop()

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;
   }
}