Bonjour,
Je viens de mettre en ligne une bibliothèque pour Uno/Nano/Mega qui permet la gestion de quelques moteurs pas à pas à l'adresse http://arduino.dansetrad.fr/QuickStep. Les bibliothèques standard ne permettaient pas de faire ce dont j'avais besoin.
QuickStep fonctionne avec un timer, ce qui permet de faire tourner les moteurs:
➱ à la vitesse programmée
➱ sans avoir besoin d'un code non bloquant
On peut donc parfaitement faire tourner des moteurs en même temps qu'un "blink with delay" qui comporte des delay(500).
Si un seul moteur tourne, le temps minimum entre deux pas est de 9µs (soit plus de 100'000 pas/s)
ce qui permet d'utiliser les micro-pas, et les vitesses possibles justifient les accélérations et les décélérations.
Si on va très lentement (entre 4pas/s et 970 pas/s) on peut même utiliser le timer 0 tout en conservant les fonctions delay() &Co
Les vitesses de rotations peuvent être passées en µs/pas, en tr/s ou en tr/mn. Par exemple pour faire un tour (moteur 200 pas/tr, 16 µpas) on peut écrire:
quickStepRotation(UN_TOUR, 60 RPM);
quickStepRotation(UN_TOUR, 1 RPS);
quickStepRotation(UN_TOUR, 312.5 micro_secondes_par_pas);
Il est possible d'enchaîner des rotations sans rajouter de temps mort.
Il y a encore un bug quelque part, mais je ne l'ai jamais vu apparaître. C'est en mettant au point votre application ensemble que je finirais bien par le trouver.