En realidad, Achim ha hecho un muy buen punto aquí.
Hay una gran diferencia entre un relé Reed (magnético) y un sensor de efecto Hall.
Principalmente, un relé Reed conectará un interruptor cuando una fuerza magnética suficiente actúe sobre él, lo que le dará una señal de encendido / apagado. Un sensor de efecto Hall proporciona un nivel de voltaje que indica la cantidad de fuerza magnética que 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 brindaría desafíos adicionales al usar un sensor de efecto Hall .
El principal desafío será que esté tratando un dispositivo analógico como un dispositivo digital, esperando que se dispare en 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 por alto el voltaje mínimo para una señal alta (¿aproximadamente 3.5v, IIRC?) Varias veces cuando el imán pasa por 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 también supone que todo lo que haces es hacer un bucle y leer valores; no te deja mucho tiempo para actualizar una pantalla, calcular, etc. Sin mencionar, si lees en el momento equivocado, ¡perdiste tu señal!
Estoy seguro de que es posible usar interrupciones de alguna manera vinculadas al ADC, pero no tengo ese conocimiento a la mano.
En cambio, si desea utilizar un sensor de efecto Hall actual , le sugeriría que lo introduzca en un disparador Schmitt para convertirlo en una señal digital (on / off) a un nivel calibrado que indica "directamente debajo del imán". Además, dependiendo del nivel de histéresis implementado en el disparador de Schmitt, es posible que tenga que hacer algunos rebotes que podrían cambiar la tasa de rebotes en función de la velocidad actual. Entonces podrías tratarlo como un relé de Reed normal.
! c