Lorsque je branche ce fil sur la borne 2 de ma carte Uno en utilisant la PULLUP interne ( carte relié à la masse du véhicule qui émet le signal ) , le signal n'est plus bon du tout, je pense que les pins digitaux ne prennent que 5V maxi ( résistance à installer en amont ) ?
Voici le bout de programme que j'ai mis en place pour lire ce signal :
Sur mon moniteur série, lorsque j'ai mis les roues à tourner de manière stable, ça a démarré à 0 et à chaque ligne, il m'incrémentait la valeur et lorsque j'ai arrêté les roues, il n'a pas pour autant remis à 0 ma valeur.
Merci pour la simulation, j'oscille bien entre 1402 et 1405 sur 10 lignes, je refais un test demain matin et je t'enverrais le screen du moniteur série. Le fait d'être un poil plus fort en tension ( 5.1V ) n'engendre pas de soucis sur le pin 2 ?
Il faut une section critique dans la loop quand vous accédez à la variable partagée avec l’interruption.
Par exemple dans la loop quand il est temps d’aller triturer le compteur vous commencez par désactiver les interruptions vous copiez le compteur existant et le remettez à zéro ainsi que le chrono à millis() et vous réactivez les interruptions et travaillez à l’affichage avec la copie.
Si vous ne faites pas cela rien n’empêche que l’interruption arrive au plus moment et modifie des octets pendant que la loop remettait à zéro le compteur par exemple
Merci à tous les deux, après test ce matin, j'avais toujours le problème sur le pin 2 de ma carte Uno qui n'a pas dû aimer être sous la tension de 7V avant que je mette en place le pont diviseur de tension.
En changeant par le pin 3 de la carte, tout est rentré dans l'ordre.
Dans un second temps, je souhaiterais analyser cette information vitesse avec une carte Arduino Nano Every ABX00028 qui serait relié à une carte Uno en UART RX / TX
Non, il n'y aurait que deux carte, la Uno principal ( réceptrice du UART RXT / TX ) pour la gestion du véhicule et une carte Nano ( émettrice de la variable de vitesse ). Je pensais que la surveillance des boutons par la bibliothèque OneButton avait besoin d'une priorité sur la loop, c'est pourquoi j'ai pensé qu'il fallait deux cartes. Je vais tenter d'intégrer dans mon programme principal l'interruption voir ce que ça donne. Merci pour l'informtion
non la bibliothèque OneButton fait du polling, quand vous faites
ça va simplement faire un digitalRead() pour voir l'état de la pin et réagir en conséquence en déclenchant le callback si nécessaire.
Même à 16MHz c'est rapide et pour l'appui d'un bouton par un humain, on parle de toutes façons en dizaines de millisecondes donc l'arduino a le temps de faire beaucoup d'autres choses que de surveiller les boutons.
Vous pouvez à mon avis compter vos impulsions, surveiller les boutons et émettre la vitesse sur UART de temps en temps sans aucun souci sur votre UNO.