In realtà, Achim ha fatto un'ottima osservazione qui.
C'è una grande differenza tra un relè Reed (magnetico) (interruttore) e un sensore ad effetto Hall.
Principalmente, un relè Reed collegherà un interruttore ogni volta che una forza magnetica sufficiente agisce su di esso, dandoti un segnale on / off. Un sensore ad effetto Hall fornisce un livello di tensione che indica quanta forza magnetica viene applicata ad esso.
Il codice mostrato sopra funzionerebbe solo "direttamente" con un relè Reed, il che non significa che non funzionerà affatto per un sensore ad effetto hall, ma che fornirebbe ulteriori sfide usando un sensore ad effetto hall.
La sfida principale sarà che stai trattando un dispositivo analogico come uno digitale, aspettandoti di innescare al sorgere di un impulso. Ora, il segnale non sarà pulsato - sarà generalmente come una curva a campana, con tutti i tipi di fluttuazioni. Potresti inciampare oltre la minima tensione per un segnale alto (circa 3,5 V, IIRC?) Più volte mentre il magnete passa attraverso il sensore ad effetto hall.
Ovviamente, il nostro primo istinto quando si usa qualcosa come un sensore ad effetto hall è usare l'ADC e leggere il livello di tensione su un pin analogico. Tuttavia, hai un limite di 10.000 letture, all'incirca, al secondo su un pin analogico (ogni lettura richiede 100 uS). Ciò presuppone anche che tutto ciò che fai sia ciclo e leggere valori - non ti lascia molto altro tempo per aggiornare un display, calcolare, ecc. Per non parlare del fatto che, se leggi nel momento sbagliato, hai perso il segnale!
Sono sicuro che è possibile utilizzare gli interrupt in qualche modo collegati all'ADC, ma non ho tale conoscenza a portata di mano.
Invece, se si desidera utilizzare un sensore a effetto Hall reale , suggerirei di inserirlo in un trigger Schmitt per convertirlo in un segnale digitale (on / off) a un livello calibrato che indica "direttamente sotto il magnete". Inoltre, a seconda del livello di isteresi implementato nel trigger di Schmitt, potrebbe essere necessario eseguire un de-rimbalzo che cambierebbe la velocità di de-rimbalzo in base alla velocità corrente. Quindi potresti trattarlo come un normale relè Reed.
! c