Bonjour,
1) pour le premier test, je suggérais de SEULEMENT déplacer les moveTo dans le if, mais de garder les run en dehors.
Si tu mets tout dans le if, alors tu ne fera un run uniquement quand tu reçois une nouvelle trame, soit 30 fois par secondes : hors chaque appel à run te fait faire au plus un micro-pas, donc au total tu ne fera pas plus que 30 micros pas par seconde, soit 30*1/8=3.75 pas complets par seconde.
2) Le deuxième test montre que c'est les fonctions moveTo et/ou run qui ralentissent significativement les choses.
3) pour calculer la position "à la main", tu veux par exemple faire :
PC5=5*millis()/1000/60; //5 tours/minute
ainsi le moteur 5 essayera de tourner à une vitesse de 5 tours/minute
Est-ce que tu as bien compris ce que font les fonctions moveTo et run?
-moveTo indique la position à laquelle tu veux te rendre (en nombres de pas depuis la position du moteur au démarage du programme). Du coup, ça ne sert à rien de l'appeller si tu n'as pas une nouvelle consigne pour ton moteur (sachant que ces nouvelles consignes, elles arrivent dans les trames) : il vaut donc mieux l'appeller depuis l'intérieur du if.
-run permet de faire un micro-pas si le moment est venu 'ou dépassé) d'en faire un. Donc soit c'est trop tôt pour en faire un, et on fait rien ; soit c'est le bon moment pour en faire un, et on en fait un ; soit on est déjà en retard, et en on fait quand même qu'un (même si on a 10 pas en attente). Il faut donc appeller run très souvent, au moins aussi souvent que l'on doit faire des pas, idéalement même plus souvent (pour pouvoir rattraper un éventuel retard)
Donc je te suggère que tu essayes de refaire le test 1 en mettant seulement moveTo dans le if, et en gardant run en dehors. Si le résultat est bon, alors c'était les appels trop fréquents à moveTo qui ralentissaient, et ton problème est résolu. Si c'est toujours trop lent, alors c'est très probablement la foncion run qui est le problème. Là ça deviendra plus compliqué de trouver une solution, du coup j'attends ta réponse au test, histoire de ne pas me casser la tête pour rien.
Pour le test 3, tu peux le faire si tu veux, mais vu les résultats du test 2, je penses pas qu'on en tire quelque chose d'utile
Bonne journée
Sandro