Elle gère un encodeur rotatif en utilisant 2 pins d'interruptions.
Le résultat est l'absence totale de rebonds.
Mes montages précédents incluaient un debounce effectué par un circuit RC et un 74HC14.
J'ai utilisé cette bibliothèque avec, par précaution, un simple RC (schéma ci-dessous) ; le résultat est parfait.
En fait, vous doublez les précautions n'est-ce pas?
Par precaution, un circuit RC.
A mon avis, vous auriez pus vous économiser et faciliter le câblage sans R2, R4, R6, voir même en utilisant les résistances de PULLUP_INTERNE, à tester.
Et provoquer une interruption sur front descendant (dècharge de C) qui est sûrement plus raide que le front montant (ayant 1 RC).
Je plussoie @J-M-L , avec la bibliothèque encoder.h, plus besoin de composants pour l'anti-rebonds, la bibliothèque s'occupe de tout, y compris l'initialisation des pin (les contacts A et B) à GND).
Si c'est. un codeur rotatif manuel, on peut même se passer d'entrées avec interruption
Je n’ai pas répondu que cela - vous sortez cette phrase du contexte
Mon point était que @standardUser a écrit à propos de la bibliothèque dont il parle
Je faisais remarquer qu’il n’y avait pas de souci non plus de rebond avec une autre bibliothèque qui sait gérer par interruption (ou sans) et que son test ne mettait rien en évidence sur la qualité de la dite bibliothèque à éviter les rebonds puisque son montage incluait un anti rebond matériel.
C’est pour cela que j’ai écrit
La bibliothèque de gfvalvo (qui est présent sur le forum anglophone ) est intéressante mais elle ne fonctionne qu’avec des pins gérant les interruptions extérieures (donc un seul encodeur sur uno par exemple) et il a récupéré le code de l’autre bibliothèque dont je parlais (encoder library ) de PJRC pour la gestion des pins.
L’approche du debounce est intéressante et différente entre les deux bibliothèques et comme il ne gère pas les pins sans interruption la bibliothèque est plus compacte.
Bref, non!
Encoder ne nécessite pas forcément des pin avec interruptions, si tu lis la doc jusqu'au bout, il est dit:
The first pin should be capable of interrupts. If both pins have interrupt capability, both will be used for best performance. Encoder will also work in low performance polling mode if neither pin has interrupts.
Es si l'on s'en réfère au schéma de @standardUser, il utilise un codeur manuel
qui se contente de Low Performance vu que, avec, on ne fait qu'augmenter ou diminuer une valeur.
@jef59
J'aurai dû écrire :
"J'ai laissé les circuits RC parce que je n'avais pas du tout envie (le courage) de réouvrir le boîtier et dessouder quelques composants, qui, de toutes façons, ne sont pas gênants'".
Toutefois, je n'utilise jamais les résistance de pull-up internes parce que :
Je n'y pense jamais.
Mais surtout, je ne les ai jamais utilisées par ignorance de leur fonctionnement.
Ma question :
Si l'on déclare une entrée avec une résistance de pull-up activée, est-ce que l'Arduino conserve cette configuration en mémoire (lire ces résistances seront encore activées par défaut pour un autre programme téléversé) ou cette activation cesse une fois un autre programme téléversé ?
Excellent raison, d'autant plus que pour un codeur manuel, ça ne va pas beaucoup gêner
Ces résistances sont activées pour autant qu'il y en a la commande dans le programme: pinMode(bpPin[b], INPUT_PULLUP);
Si dans le prochain programme chargé dans cet Arduino il y a:
pinMode(bpPin[b], INPUT);
La PULLUP interne n'est pas activée.
Si vous ne faites rien dans votre setup, par défaut les pins seront juste en INPUT lors du boot.
Attention sur AVR, une pin qui n'a pas été déclarée en OUTPUT et qui est passée en HIGH dans le setup est alors en INPUT_PULLUP (mettre à HIGH une INPUT revient à activer le pullup).
Effectivement, tout cela, c'est clairement écrit dans les docs de NewEncoder.
L'intention de mon discours était dire que si une "nouvelle" bibliothéque était suggérée par un intervenant du forum, c'était plus pertinent de parler de ses avantages ou inconvénients plutôt que de ceux d'une autre bibliothéque.
Et à ce propos, c'est vrai que (je n'ai pas tout lu) je n'ai vu chez NewEncoder que des modes utilisant des interruptions, c'est clairement dit par son créateur.
C'est 1 inconvénient à relever, bien qu'on puisse se poser la question de l'intérêt de tester une bibliothéque pour encodeur avec uniquement un encodeur manuel précablé.
Car si j'ai bien compris, il est précablé:
Le sujet de la présentation de NewEncoder était en quelque sorte tué dans l'oeuf non?
Du genre:
"J'utilise NewEncoder avec 1 encoder et circuit RC inclut, mais je n'ai pas besoin des circuits RC.
ET
NewEnvoder utilise uniquement les broches d'interuption, mais à vrai dire, pour ce que j'ai à faire avec mon encodeur, ce n'était pas vraiment utile
...
Donc en fait, j'utilise NewEncoder, j'en ais pas vraiment besoin, mais en tout cas Le résultat est l'absence totale de rebonds."
C'était ce que je disais... On ne sait pas trop ce que @standardUser voulait dire ou prouver.
➜ c'était l'objectif de ma réponse. lui faire exprimer les différences
Le signal Z / dit de top, est activé une fois par tour complet du codeur. Cela peut être utilisé pour déterminer la position absolue du codeur ou pour recalibrer le système si nécessaire.
Vous pouvez également connecter ce signal à une broche d'interruption si vous avez besoin de détecter précisément chaque tour complet du codeur
généralement oui - les signaux optiques sont beaucoup plus nets et stables que les signaux électriques produits par les contacts mécaniques.
Leur fonctionnement : les résistances de tirage au Vcc (pull-up) sont données à ± 30 % selon le lot de fabrication. Dispersion tout à fait normale dans les fabrications de circuits intégrés.
Pour éviter qu'un fil soit en l'air, elles sont parfaitement fonctionnelles, c'est d'ailleurs la fonction officielle d'une pull up ou down.
Pour les utiliser en tant que composant dans un montage électronique, il faut être joueur où savoir parfaitement ce que l'on fait.
Dans le cas particulier d'un anti-rebond, elles ont une valeur théorique suffisamment élevée pour que la valeur mini ne soit pas un souci.
Notez que cette affirmation est justifiée par une explication technique.
Attention : aux affirmations à l'emporte-pièce : tous les microcontrôleurs n'ont pas les mêmes valeurs théoriques : il faut vérifier systématiquement.
Bibliothèque pour encodeur.
Déjà il y a deux types d'encodeur : les contacts A et B ne sont pas gérés de la même façon : le schéma en #1 est ambiguë. => voir documentation Alps.
Il y a aussi des encodeurs avec des positions stables (crans) et des encodeurs sans point fixes : les deux ne se gèrent pas de la même façon, la deuxième forme est plus complexe.
Attention aussi : EC11, EC12,...,ECx ne veut rien dire sur le fonctionnement : 11, 12,...,x sont les dimensions en mm du produit.
Tout comme Nema17, Nema 23 qui ne renseigne que sur la dimension de la semelle de fixation.
J'ai fait "un truc" avec un encodeur sans bibliothèque et regardant de la doc sur l'évolution des signaux pour des encodeurs à crans, (plus simples).
J'utilisais une seule interruption.
Comme être en 5V m'arrangeait, j'ai sorti une nano de la poussière et utilisé une interruption directe.
Il en reste donc une de libre, plus les interruptions PCINT qui concernent toutes les pins sauf A6 et A7 qui ne sont pas reliées à un port numérique.
Si j'avais pris un micro d'aujourd'hui, au lieu de prendre un micro du siècle passé, j'aurais eu de nombreux E/S capable d'interruption.
Économiser une pin d'interruption n'est pas un argument pour moi, on a changé de siècle.
Il y a des fatalités qui n'en sont plus, il faut évoluer et c'est un vieux qui vous le dit.