controle de 2 moteur pas à pas

bonjour à tous ,

je voudrais controler 2 moteurs pas à pas en même temps , pour faire des cycles de déplacements
cependant dans ma ligne de code "Loop" , lorsque j'envoie les commandes de déplacement de X pas "step" sur chaque moteur , ils réalisent leur déplacement chacun leur tour et non en meme temps ( ce que je souhaiterais !! )
avez vous une solution ?
cordialement

void loop(){

NemaPan.setSpeed(10);
NemaTilt.setSpeed(10);

NemaPan.step(8000);
NemaTilt.step(8000);

delay ( 1000 );

NemaPan.step(-8000);
NemaTilt.step(-8000);

delay ( 1000 );

}

int Sens=1;
#define MOTOR_MAX 8000
int Steps=0;

setup() {
   NemaPan.setSpeed(10);
   NemaTilt.setSpeed(10);
}

loop() {
   if((Steps<MOTOR_MAX) && (Steps>=0)){
      NemaPan.step(Sens);
      NemaTilt.step(Sens);
      Steps+=Sens;
   }
   if(Steps<0) {
      delay(1000);
      Sens=1;      
   }
   if(Steps>=MOTOR_MAX) {
      delay(1000);
      Sens=-1;
   }

Dites voir.... mettre le code entre les balises ça vous dirait pas... :smiling_imp:

jfs:
Dites voir.... mettre le code entre les balises ça vous dirait pas... :smiling_imp:

+1

mettre des delay en plus, va avoir pour effet d'avoir des mouvements saccadés en plus.
sujet déjà évoqué il y a peu de temps pour un soucis similaire sur le forum.
donc une petite recherche s'impose.

Bonjour,
A quoi sert la fonction recherche sur le forum ?
Ce sujet a été évoqué il y a quelques jours : Par exemple ici (il y a d'autres topics sur le sujet)

Tu devrais également faire une recherche sur le net avec : algorithme de Bresenham

Et surtout n'oublie pas de mettre ton code entre balises (perso, je ne regarde même pas le code dans cette présentation).
C'est quoi les balises codes ? -> Lire les messages épinglés

merci à tous pour vos réponses constructives ....
effectivement " carton rouge " pour nicolas !!!
désolé
nico

Tu peux éditer tes messages pour mettre les balises.... :wink:

Oups!!! Désolé
J'ai "Edit" pour ajouter les balises

Merci.

bon , même avec l'aide d'alain je seche , le cycle se fait une seul fois
alors que je souhaiterais qu'il tourne en boucle , je ne vois pas :

void loop() {
  
  if((Steps<3000) && (Steps>=0)){
      NemaPan.step(Sens);
      NemaTilt.step(Sens);
      Steps=Steps+Sens;
   }
   if(Steps<0) {
      delay(1000);
      Sens=1;     
   }
   if(Steps>=3000) {
      delay(1000);
      Sens=-1;
   }
   }

ton premier message est toujours à éditer.....

Petit détail de test des valeurs mini et maxi

void loop() {
   if((Steps<=MOTOR_MAX) && (Steps>=0)){
      NemaPan.step(Sens);
      NemaTilt.step(Sens);
      Steps+=Sens;
   }
   if(Steps<=0) {
      delay(1000);
      Sens=1;      
   }
   if(Steps>=MOTOR_MAX) {
      delay(1000);
      Sens=-1;
   }
}

un grand merci Alain , effectivement c'est mieux comme ça
c'est parfait , maintenant il faut que j'arrive à comprendre la logique de ta prog
bonne soirée

dernière chose sur lequel je ''bute'' , je ne trouve pas ma solution sur les diff postes :
sur une autre configuration avec un contrôle du moteur PAS à Pas à l'aide d'un joystick
position neutre du joystick = moteur OFF
levier à fond à gauche = moteur step 1
levier à fond à droite = moteur step -1
à l'initialisation de carte arduino ( dans le setup ) je réalise un procédure de positionnement au point ''Home ''
qui physiquement pour moi et le point ''0 '' de met déplacement avec le joystick ( déplacement en step - ou step + )

toute cette partie fonctionne comme je le souhaite , mais pour plus de sécurité , j'aimerai mettre des butées virtuel :
c'est à dire en partant toujours du point Home ( 0 ) je peux me déplacer avec le joystick de 1000 pas max en positif ou de -1000 pas max toujours par rapport à mon centre ( le fameux point Home )
du coup j'aurai une amplitude de 2000 pas ( de -1000 à 1000 )
et du fait je ne trouve pas la combine pour dire au moteur de ne plus avancer en pas positifs si je dépasse la butée de 1000 pas et idem en pas négatifs , voila ou j'en suis
cordialement
nico

#include <Stepper.h>




// initialiser la bibliotheque stepper sur les broches D8 a D11:
Stepper NemaPan(10000,8,9,10,11); //Attribution des broches  tilt
 


 
int ButePan = 2 ;// entrée numérique capteur A pan


int buteStatePan = 0 ;


int sensorPin = A0;
int joystickPan = 0; // entrée analogique A0



void setup() {
  
 pinMode(ButePan,INPUT);
 
 NemaPan.setSpeed(6);  // vitesse de rotation à l'allumlage de la machine , deplacement de la tete jusqu'a toucher la butée 
  
 while(digitalRead (ButePan)==LOW)
 {NemaPan.step(-1);}
 
 
 NemaPan.setSpeed(8); // vittesse de retour
 NemaPan.step(7270); // nbr de pas pour reculer et se mettre en position home
 
  }
     
void loop(){ 

  int joystickPan = analogRead(sensorPin);
  

  
   if (joystickPan == 0 ){
     NemaPan.step(1); 
     NemaPan.setSpeed(10);
 }
     
  
     
    if (joystickPan ==1023  ){
     NemaPan.step(-1); 
     NemaPan.setSpeed(10);
  }
  
  
 }

message nº2

@nicopyro

Faire fonctionner 2 moteurs pas à pas simultanément, position home, butée logicielle ?
Avant de ce lancer dans du développement, l'objectif c'est quoi ?