Na verdade, Achim fez um ponto muito bom aqui.
Há uma grande diferença entre um relé (magnético) Reed (interruptor) e um sensor de efeito Hall.
Principalmente, um relé Reed conectará um interruptor sempre que houver força magnética suficiente atuando sobre ele, fornecendo um sinal liga / desliga. Um sensor de efeito Hall fornece um nível de tensão indicando quanta força magnética está sendo aplicada a ele.
O código mostrado acima funcionaria 'diretamente' apenas com um relé Reed, o que não significa que ele não funcione para um sensor de efeito hall, mas forneceria desafios adicionais usando um sensor de efeito hall.
O principal desafio será que você está tratando um dispositivo analógico como digital - esperando disparar com o aumento de um pulso. Agora, o sinal não será pulsado - geralmente será como uma curva em forma de sino, com todos os tipos de flutuações. Você pode ultrapassar a tensão mínima para obter um sinal alto (em torno de 3,5v, IIRC?) Várias vezes enquanto o ímã passa pelo sensor de efeito hall.
Obviamente, nosso primeiro instinto ao usar algo como um sensor de efeito hall é usar o ADC e ler o nível de tensão em um pino analógico. No entanto, você está limitado a 10.000 leituras, aproximadamente, por segundo em um pino analógico (cada leitura leva 100 uS). Isso pressupõe também que tudo o que você faz é repetir e ler valores - não lhe resta muito tempo para atualizar uma exibição, calcular, etc. Sem mencionar que, se você ler na hora errada, perdeu o sinal!
Tenho certeza de que é possível usar interrupções de alguma forma vinculadas ao ADC, mas não tenho esse conhecimento à mão.
Em vez disso, se você deseja usar um sensor Hall Effect real , sugiro alimentá-lo com um gatilho Schmitt para convertê-lo em um sinal digital (on / off) em um nível calibrado que indica "diretamente sob o ímã". Além disso, dependendo do nível de histerese implementado no gatilho Schmitt, pode ser necessário fazer alguns ajustes que alterariam a taxa de rejeição com base na velocidade atual. Então você poderia tratá-lo como um revezamento Reed normal.
! c