En fait, Achim a fait un très bon point ici.
Il y a une grande différence entre un relais (interrupteur) Reed (magnétique) et un capteur à effet Hall.
Principalement, un relais Reed connectera un interrupteur chaque fois qu'une force magnétique suffisante agit sur lui, vous donnant un signal marche / arrêt. Un capteur à effet Hall fournit un niveau de tension indiquant la force magnétique qui lui est appliquée.
Le code ci-dessus ne fonctionnerait que `` directement '' avec un relais Reed, ce qui ne veut pas dire qu'il ne fonctionnera pas du tout pour un capteur à effet Hall, mais qu'il poserait des défis supplémentaires en utilisant un capteur à effet Hall.
Le principal défi sera de traiter un appareil analogique comme un appareil numérique - en espérant qu'il se déclenchera à la montée d'une impulsion. Maintenant, le signal ne sera pas pulsé - ce sera généralement comme une courbe en cloche, avec toutes sortes de fluctuations. Vous pourriez trébucher au-delà de la tension minimale pour un signal élevé (environ 3,5 V, IIRC?) Plusieurs fois lorsque l'aimant passe devant le capteur à effet Hall.
Bien sûr, notre premier instinct lorsque nous utilisons quelque chose comme un capteur à effet Hall est d'utiliser l'ADC et de lire le niveau de tension sur une broche analogique. Cependant, vous êtes limité à 10 000 lectures, à peu près, par seconde sur une broche analogique (chaque lecture prend 100 uS). Cela suppose également que tout ce que vous faites est de lire en boucle et de lire des valeurs - ne vous laisse pas beaucoup de temps pour mettre à jour un affichage, calculer, etc. Sans oublier, si vous lisez au mauvais moment, vous avez raté votre signal!
Je suis sûr qu'il est possible d'utiliser des interruptions liées à l'ADC, mais je n'ai pas de telles connaissances à portée de main.
Au lieu de cela, si vous souhaitez utiliser un véritable capteur à effet Hall, je suggère de l'introduire dans un déclencheur Schmitt pour le convertir en un signal numérique (marche / arrêt) à un niveau calibré qui indique «directement sous l'aimant». En outre, selon le niveau d'hystérésis implémenté dans le déclencheur Schmitt, vous devrez peut-être effectuer un certain rebond qui modifierait le taux de rebond en fonction de la vitesse actuelle. Ensuite, vous pouvez le traiter comme un relais Reed normal.
! c