Problème asservissement moteur DC avec roue codeuse unique

Bonjour j'utilise un petit moteur DC avec petite roue codeuse en bout d'arbre récupéré d'une imprimante.
Les puls de la roue codeuse sont raccordés sur la borne 2 de l'arduino uno. Une carte shield moteur est embrochée sur ma Uno.
J'ai un problème de code. Après 500 puls (enfin entre 500 et 550 c'est bon) je veux que le moteur s'arrête. Premier problème parfois il s'arrête entre 500 Et 535 puls et parfois il va jusque 1000 puls avant de s'arrêter.
Second problème après les 500 puls j'aimerai qu'il redémarre de 500 puls en arrière.
J'ai joint une photo du montage en attaché ainsi que le code.
Quelqu'un a-t-il une idée pour résoudre ce problème.
Merci pour votre aide.

simpleRotation-et-comptageCodeur2.ino (1.29 KB)

Bonjour didiersee

didiersee:
je veux que le moteur s'arrête. Premier problème parfois il s'arrête entre 500 Et 535 puls et parfois il va jusque...

Le problème vient du fait que la commande

motor.run(RELEASE);// stop moteur

ne freine pas le moteur, il ne met que la vitesse 0 (voire ici)

Le moteur continue sur sa lancée.
La solution serait d'envoyer un petit coup en sens inverse pendant un temps... suffisant à essayer en tatant. Attention, certains moteurs CC ont des collecteurs qui n'aiment pas trop ça!!

Cordialement
jpbbricole

La librairie n'est pas adapté à ce que vous voulez faire.
Comme relevé par JPbricole, l'instruction release ne stop pas la rotation du moteur immédiatement.

Le L293 permets un freinage franc et mettant deux niveaux de tention identique sur chacune des broches du moteur . soit vcc moteur soit GND.

pour cela, il faut que la librairie utilisé te permette de contrôler individuellement les broches de commande du L293 du shield.

Exemple : foward = reverse= HIGH.

Merci je vais faire des recherches je ne connais pas grand choses dans ces librairies.