Aller au contenu


Stéphanie Jenny

Inscrit(e) (le) 15 juin 2019
Déconnecté Dernière activité juil. 05 2019 02:25
-----

Sujets que j'ai initiés

Débutant en programmation arduino et moteur NEMA

16 juin 2019 - 08:48

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