Schrittmotoren soll sich nicht gleichzeitig drehen

Hallo,

ich habe zwei Schrittmotoren die folgende Bewegungen ausführen sollen:

Motor 1 dreht sich eine bestimmte Zeit nach rechts
Motor 1 stoppt
Motor 2 dreht sich eine bestimmte Zeit nach rechts
Motor 2 stoppt
Motor 1 dreht sich eine bestimmte Zeit nach links
Motor 1 stoppt
Motor 2 dreht sich eine bestimmte Zeit nach rechts
Motor 2 stoppt

Das ganze soll sich im loop wiederholen.
Bei “meinem” Sketch drehen sich beide Motoren gleichzeitig:

const int dirPin_X = 5;
const int stepperPin_X = 2;
const int dirPin_Y = 6;
const int stepperPin_Y = 3;


void setup(){
  pinMode(dirPin_X, OUTPUT);
  pinMode(stepperPin_X, OUTPUT);
  pinMode(dirPin_Y, OUTPUT);
  pinMode(stepperPin_Y, OUTPUT);
  }
void step(boolean dir, int steps){
  digitalWrite(dirPin_X,dir);
  digitalWrite(dirPin_Y,dir);  

  delay(50);
  for(int i=0;i<steps;i++){
    digitalWrite(stepperPin_X, HIGH);
    delayMicroseconds(600);
    digitalWrite(stepperPin_X, LOW);
    delayMicroseconds (600);
    digitalWrite(stepperPin_Y, HIGH);
    delayMicroseconds(600);
    digitalWrite(stepperPin_Y, LOW);
    delayMicroseconds (600);
    }
   }
void loop(){
  step(true,1000);
  delay(50);
}

Wie kann ich die Motoren nacheinander drehen lassen?

Viele Grüße
Jan

Teile die Funktion "void step(boolean dir, int steps)" auf in

"void step1(boolean dir, int steps)"

und

"void step2(boolean dir, int steps)"

auf und setze die jeweiligen Motorsteuerungen da rein.

In der Loop startest du die entsprechend mit step1 und step2

Super!!

Jetzt laufen die Motoren so wie ich es mir vorgestellt habe.

Vielen Dank

const int dirPin_X = 5;
const int stepperPin_X = 2;
const int dirPin_Y = 6;
const int stepperPin_Y = 3;


void setup(){
  pinMode(dirPin_X, OUTPUT);
  pinMode(stepperPin_X, OUTPUT);
  pinMode(dirPin_Y, OUTPUT);
  pinMode(stepperPin_Y, OUTPUT);
  }
void step_1(boolean dir, int steps){
  digitalWrite(dirPin_X,dir);
  delay(50);
  for(int i=0;i<steps;i++){
    digitalWrite(stepperPin_X, HIGH);
    delayMicroseconds(600);
    digitalWrite(stepperPin_X, LOW);
    delayMicroseconds (600);
    }
}
void step_2(boolean dir, int steps){
  digitalWrite(dirPin_Y,dir);
  delay(50);
  for(int i=0;i<steps;i++){
    digitalWrite(stepperPin_Y, HIGH);
    delayMicroseconds(600);
    digitalWrite(stepperPin_Y, LOW);
    delayMicroseconds (600);
   }
}
void loop(){
  step_1(true,3000);
  delay(100);
  step_2(true,100);
  delay(100);
  step_1(false,3000);
  delay(100);
  step_2(true,100);
  delay(100);
}

Super und vielen Dank für deine Rückmeldung.
:blush: