MTobjets: Exemple 9
Gestion par événements pour UNO, Nano, Mega
2 moteurs et 4 boutons
Problème posé
Vu sur un forum:
J'ai récupéré un code qui permet de faire fonctionner un moteur pas à pas avec 2 poussoirs avant arrière, testé sur une Nano avec un
driver ulm2003.
Est-il possible sur une Nano d'avoir 4 boutons (2 avants 2 arrières ) et 2 moteurs qui auraient des commandes séparées et la même
vitesse?
Programme complet recommandé
Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.
// 2 moteurs pas à pas et 4 boutons. Pour chaque moteur on a un bouton pour // le faire tourner dans un sens et un bouton pour le faire tourner dans //l'autre. Les deux moteurs sont indépendants. // Un potentiomètre règle la vitesse entre 0 et 200tr/mn // Voir https://forum.arduino.cc/t/2-moteur-pas-a-pas-4-boutons/1384039 #include// V1.0.5 Voir http://arduino.dansetrad.fr/MTobjects const uint8_t sensHoraireMoteur1 = A1; // Numéro de la broche du bouton senshoraire const uint8_t sensAntihoraireMoteur1 = A2; // Numéro de la broche du bouton sensantihoraire const uint8_t sensHoraireMoteur2 = A3; // Numéro de la broche du bouton senshoraire const uint8_t sensAntihoraireMoteur2 = A4; // Numéro de la broche du bouton sensantihoraire // *************************** Pour le premier moteur ************************************* MTstepStepper Moteur1(pin_Step 2, pin_Dir 5, pin_EN 8, accelerations_sur 0 pas_ou_micro_pas); void rotationSensHoraireMoteur1(void) { Moteur1.setSpeed((analogRead(A0) / 5) RPM); Moteur1.move(CONTINUE); } void rotationSensAntihoraireMoteur1(void) { Moteur1.setSpeed((analogRead(A0) / 5) RPM); Moteur1.move(-CONTINUE); } void arretMoteur1(void) { Moteur1.stop(); } MTbutton boutonSensHoraireMoteur1(sensHoraireMoteur1, rotationSensHoraireMoteur1, arretMoteur1); MTbutton boutonSensAntihoraireMoteur1(sensAntihoraireMoteur1, rotationSensAntihoraireMoteur1, arretMoteur1); // *************************** Pour le deuxième moteur ************************************ MTstepStepper Moteur2(pin_Step 3, pin_Dir 6, pin_EN 8, accelerations_sur 0 pas_ou_micro_pas); void rotationSensHoraireMoteur2(void) { Moteur2.setSpeed((analogRead(A0) / 5) RPM); Moteur2.move(CONTINUE); } void rotationSensAntihoraireMoteur2(void) { Moteur2.setSpeed((analogRead(A0) / 5) RPM); Moteur2.move(-CONTINUE); } void arretMoteur2(void) { Moteur2.stop(); } MTbutton boutonSensHoraireMoteur2(sensHoraireMoteur2, rotationSensHoraireMoteur2, arretMoteur2); MTbutton boutonSensAntihoraireMoteur2(sensAntihoraireMoteur2, rotationSensAntihoraireMoteur2, arretMoteur2); // Pour mettre autre chose? void setup(){} void loop(){}