Bonjour tout le monde je viens de me lancer dans la programmation arduino pour faire fonctionner deux moteurs pas à pas et je rencontre quelque problèmes pour mettre en oeuvre une action bien précise je vais essayer d'être claire.
je souhaite dans un premier temps pouvoir mettre en marche et arrêter deux moteur pas à pas en même temps grâce au bouton poussoir du joystick. autrement dis lorsque j appui une fois les moteurs se lancent et une autre fois les moteur s 'arrête.
Dans un deuxième temps je voudrais que les moteur soit branchez sur une multiprise qui est relier a un relais afin que lorsque le relais est alimenté les moteurs avancent de X-pas et lorsque qu'il ne l est plus ils reculent de x pas .
Merci par avance de votre aide. voici le code que j'utilise pour les commander avec le joystick.
#include <AccelStepper.h> // définit les numéros de pins const int axeY=0; const int axeX=1; const int stepPin = 11 ; const int dirPin = 10 ; const int stepPin2 = 6 ; const int dirPin2 = 5 ; const int enPin = 9 ; const int enPin2 = 3 ; const int sw = 4 ; bool run = 0; #define stepPin2 6 #define dirPin2 5 #define sw 4 AccelStepper stepper(AccelStepper::DRIVER, stepPin2, dirPin2); void setup () { // Définit les deux broches comme sorties pinMode (stepPin, OUTPUT); pinMode (dirPin, OUTPUT); pinMode (axeX, INPUT); pinMode (axeY, INPUT); pinMode (stepPin2, OUTPUT); pinMode (dirPin2, OUTPUT); pinMode (enPin, OUTPUT); pinMode (enPin2, OUTPUT); pinMode (sw, INPUT); digitalWrite(sw, HIGH); stepper.setMaxSpeed(10000); Serial.begin (9600); } void loop () { if ((analogRead(axeX)) > 600){ digitalWrite (dirPin2,HIGH); // Permet au moteur de se déplacerdans une direction particulière // Donne 200 impulsions pour effectuer une rotation d'un cycle complet { stepper.setSpeed(10000); stepper.runSpeed(); } } if ((analogRead(axeX)) < 400){ digitalWrite (dirPin2,LOW); // Permet au moteur de se déplacer dans une direction particulière // Donne 200 impulsions pour effectuer une rotation d'un cycle complet { stepper.setSpeed(-10000); stepper.runSpeed(); } } if ((analogRead(axeY)) > 600){ digitalWrite (dirPin,HIGH); // Permet au moteur de se déplacer dans une direction particulière // Donne 200 impulsions pour effectuer une rotation d'un cycle complet { digitalWrite (stepPin, LOW); delayMicroseconds(0.5); digitalWrite (stepPin, HIGH); delayMicroseconds(0.5); } } if ((analogRead(axeY)) < 400){ digitalWrite (dirPin,LOW); // Permet au moteur de se déplacer dans une direction particulière // Donne 200 impulsions pour effectuer une rotation d'un cycle complet { digitalWrite (stepPin, LOW); delayMicroseconds(0.5); digitalWrite (stepPin, HIGH); delayMicroseconds(0.5); } } }