Je m'essaye au code, qui veut m'aider à identifier mes erreurs de noob?

Non, ce n'est pas aussi simple.
C'est avant tout une problématique liée à la mécanique.
Il y a des codeurs incrémentaux avec des crans mécaniques. Le codeur a donc un certain nombres de positions matérialisées mécaniquement par une bille qui bloque dans une cuvette.
Si pour chaque cran le signal CLK génère les états bas -> haut -> bas il n'y a aucun intérêt à utiliser CHANGE pour l'interruption car tu auras effectivement 2 interruptions mais comme tu ne peux pas t'arrêter mécaniquement entre 2 crans ton comptage avancera toujours de 2.

L'intérêt de CHANGE c'est quand tu as un encodeur à rotation continue sans crans. Là effectivement avec CHANGE tu peux maximiser la résolution.
Le même raisonnement s'applique si on utilise les interruptions sur CLK et sur DT (des fois appelés A et B dans certaines docs). On a alors une résolution multipliée par 4.
Donc avant tout il faut bien regarder comment est conçu ton encodeur.

1 Like