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();
}
}
}


Mon contenu
Homme




