2 Schrittmotoren gleichzeitig ansteuern

Hallo Zusammen,

ich habe das Probelm, dass ich es nicht schaffe meine 2 bipolaren Schrittmotoren gleichzeitig anzusteuern. Es dreht sich immer erst der eine und dann der andere. Bin leider ein Anfänger und hoffe es ist jemand so nett und kann mir dabei weiter helfen.

Ich verwende ein Adafruit Motorshield V2.

Mein Sketch lautet bis jetzt:

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include “utility/Adafruit_MS_PWMServoDriver.h”

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_MotorShield AFMM = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Connect a stepper motor with 200 steps per revolution (1.8 degree)
Adafruit_StepperMotor *Motor1 = AFMS.getStepper(200, 1); //(M1 and M2)
Adafruit_StepperMotor *Motor2 = AFMM.getStepper(200, 2); //(M3 and M4)

void setup() {
Serial.begin(9600);
Serial.println(“Stepper test!”);

AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz

Motor1->setSpeed(1); // Geschwindigkeit
Motor2->setSpeed(1);
}

void loop() {

Motor1->step(100, FORWARD, SINGLE);
Motor2->step(100, BACKWARD, SINGLE);
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

Was steht denn in der Doku zu step()?
Was für Alternativen gibt es?

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"


Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_MotorShield AFMM = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Connect a stepper motor with 200 steps per revolution (1.8 degree)
Adafruit_StepperMotor *Motor1 = AFMS.getStepper(200, 1); //(M1 and M2)
Adafruit_StepperMotor *Motor2 = AFMM.getStepper(200, 2); //(M3 and M4)




void setup() {
  Serial.begin(9600);           
  Serial.println("Stepper test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
 
Motor1->setSpeed(1);  // Geschwindigkeit
Motor2->setSpeed(1);
}


void loop() {

 Motor1->step(100, FORWARD, SINGLE);
 Motor2->step(100, BACKWARD, SINGLE);
}

Was ist genau mit Doku gemeint?
Alternativ, kann man statt “Singel” auch, DOUBLE, INTERLEAVE, MICROSTEP schreiben
Oder es gibt auch den Befehl Motor1->onestep(FORWARD, SINGLE)

Bitte schaue mal im Thema Zwei Schrittmotoren mit Motor Shield V2.0 unabhängig voneinander steuern.