Bonsoir à tous , après avoir plus ou moins réussis à contrôler un moteur pas à pas avec le moniteur série , je me redirige vers le PWM pour moins de complexité avec vigibot et pour éviter d'utiliser le RX TX . Dans la configuration , une pi envoie un signal PWM qui est convertit par l'arduino en un signal lisible par le driver du moteur. Je ne sais pas du tout par quoi commencer , je suis bloqué... J'ai mis deux programme un peu différent , c'est les deux manières que j'ai expérimenté pour contrôler un ou plusieurs moteur pap
Merci d'avance
Code Terminé
#include <AccelStepper.h> AccelStepper stepper1(AccelStepper::FULL4WIRE, 0, 2, 1, 3); AccelStepper stepper2(AccelStepper::FULL4WIRE, 4, 6, 5, 7); AccelStepper stepper3(AccelStepper::FULL4WIRE, 8, 10, 9, 11); AccelStepper stepper4(AccelStepper::FULL4WIRE, A0, A2, A1, A3); void setup() { // Paramétrage du premier moteur avec setMaxSpeed et setAcceleration stepper1.setMaxSpeed(1000); stepper1.setAcceleration(200); // Paramétrage du second moteur avec setMaxSpeed et setAcceleration stepper2.setMaxSpeed(1000); stepper2.setAcceleration(200); // Paramétrage de troisième moteur avec setMaxSpeed et setAcceleration stepper3.setMaxSpeed(1000); stepper3.setAcceleration(200); // Paramétrage de quatrième moteur avec setMaxSpeed et setAcceleration stepper4.setMaxSpeed(1000); stepper4.setAcceleration(200); } void loop() { //Début stepper1.move(300); stepper2.move(-300); stepper3.move(-300); stepper4.move(300); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(-600); stepper2.move(600); stepper3.move(600); stepper4.move(-600); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(300); stepper2.move(-300); stepper3.move(-300); stepper4.move(300); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(0); stepper2.move(-0); stepper3.move(500); stepper4.move(-500); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(500); stepper2.move(-500); stepper3.move(-500); stepper4.move(500); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(-500); stepper2.move(500); stepper3.move(500); stepper4.move(-500); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } //Début stepper1.move(0); stepper2.move(0); stepper3.move(-500); stepper4.move(500); while ( ( stepper1.distanceToGo() != 0 ) || ( stepper2.distanceToGo() != 0 ) || (stepper3.distanceToGo() != 0) || (stepper4.distanceToGo() != 0) ) { stepper1.run(); stepper2.run(); stepper3.run(); stepper4.run(); } delay(1000); }
Test
#include <AccelStepper.h> AccelStepper stepper1(AccelStepper::FULL4WIRE, 1, 3, 2, 4); void setup() { Serial.begin(9600); stepper1.setMaxSpeed(1000); stepper1.setAcceleration(300); } void loop() { if(Serial.available() > 0) { char caractere = Serial.read(); if(caractere == '1') { stepper1.move(100); stepper1.run(); } if(caractere == '2') { stepper1.move(500); while ( stepper1.distanceToGo() != 0 ) stepper1.run(); } if(caractere == '3') { stepper1.move(1000); while ( stepper1.distanceToGo() != 0 ) stepper1.run(); } if(caractere == '4') { stepper1.move(1500); while ( stepper1.distanceToGo() != 0 ) stepper1.run(); } } }
Fichier(s) joint(s)
Modifié par Microrupteurman, 29 novembre 2020 - 07:09 .