En realidad, Achim ha hecho un muy buen punto aquí.
Hay una gran diferencia entre un relé (interruptor) Reed (magnético) y un sensor de efecto Hall.
Principalmente, un relé Reed conectará un interruptor siempre que actúe sobre él una fuerza magnética suficiente, dándole una señal de encendido / apagado. Un sensor de efecto Hall proporciona un nivel de voltaje que indica cuánta fuerza magnética se le aplica.
El código que se muestra arriba solo funcionaría 'directamente' con un relé Reed, lo que no quiere decir que no funcionará en absoluto para un sensor de efecto hall, sino que proporcionaría desafíos adicionales usando un sensor de efecto hall.
El desafío principal será que esté tratando un dispositivo analógico como uno digital, esperando desencadenar el aumento de un pulso. Ahora, la señal no será pulsada, generalmente será como una curva de campana, con todo tipo de fluctuaciones. Puede pasar el voltaje mínimo para una señal alta (¿alrededor de 3.5v, IIRC?) Varias veces cuando el imán pasa el sensor de efecto hall.
Por supuesto, nuestro primer instinto cuando usamos algo como un sensor de efecto Hall es usar el ADC y leer el nivel de voltaje en un pin analógico. Sin embargo, está limitado a 10,000 lecturas, aproximadamente, por segundo en un pin analógico (cada lectura toma 100uS). Eso supone también que todo lo que hace es bucle y leer valores, no le deja mucho tiempo para actualizar una pantalla, calcular, etc. Sin mencionar que si leyó en el momento equivocado, ¡perdió su señal!
Estoy seguro de que es posible usar interrupciones de alguna manera vinculadas al ADC, pero no tengo ese conocimiento a mano.
En cambio, si desea utilizar un sensor de efecto Hall real , le sugiero que lo alimente a un disparador Schmitt para convertirlo en una señal digital (encendido / apagado) a un nivel calibrado que indique "directamente debajo del imán". Además, dependiendo del nivel de histéresis implementado en el disparador de Schmitt, es posible que deba hacer un cierto rebote que cambiaría la tasa de rebote en función de la velocidad actual. Entonces podrías tratarlo como un relé Reed normal.
!C