Thank a lot for your help.
Code: Select all
// Shows how to run three Steppers at once with varying speeds
//
// Requires the Adafruit_Motorshield v2 library
// https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library
// And AccelStepper with AFMotor support
// https://github.com/adafruit/AccelStepper
// This tutorial is for Adafruit Motorshield v2 only!
// Will not work with v1 shields
#include <Wire.h>
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <Adafruit_MotorShield.h>
Adafruit_MotorShield AFMStop(0x60); // Motorboard 1
Adafruit_MotorShield AFMSbota(0x61); // Motorboard 2
Adafruit_MotorShield AFMSbotb(0x71); // Motorboard 3
Adafruit_MotorShield AFMSbotc(0x68); // Motorboard 4
Adafruit_StepperMotor *myStepper1 = AFMStop.getStepper(2052, 1);
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(2052, 2);
Adafruit_StepperMotor *myStepper3 = AFMSbota.getStepper(2052, 1);
Adafruit_StepperMotor *myStepper4 = AFMSbota.getStepper(2052, 2);
Adafruit_StepperMotor *myStepper5 = AFMSbotb.getStepper(2052, 1);
Adafruit_StepperMotor *myStepper6 = AFMSbotb.getStepper(2052, 2);
Adafruit_StepperMotor *myStepper7 = AFMSbotc.getStepper(2052, 1);
Adafruit_StepperMotor *myStepper8 = AFMSbotc.getStepper(2052, 2);
// you can change these to DOUBLE or INTERLEAVE or MICROSTEP!
void forwardstep1() {
myStepper1->onestep(FORWARD, SINGLE);
}
void backwardstep1() {
myStepper1->onestep(BACKWARD, SINGLE);
}
void forwardstep2() {
myStepper2->onestep(FORWARD, SINGLE);
}
void backwardstep2() {
myStepper2->onestep(BACKWARD, SINGLE);
}
void forwardstep3() {
myStepper3->onestep(FORWARD, SINGLE);
}
void backwardstep3() {
myStepper3->onestep(BACKWARD, SINGLE);
}
void forwardstep4() {
myStepper4->onestep(FORWARD, SINGLE);
}
void backwardstep4() {
myStepper4->onestep(BACKWARD, SINGLE);
}
void forwardstep5() {
myStepper5->onestep(FORWARD, SINGLE);
}
void backwardstep5() {
myStepper5->onestep(BACKWARD, SINGLE);
}
void forwardstep6() {
myStepper6->onestep(FORWARD, SINGLE);
}
void backwardstep6() {
myStepper6->onestep(BACKWARD, SINGLE);
}
void forwardstep7() {
myStepper7->onestep(FORWARD, SINGLE);
}
void backwardstep7() {
myStepper7->onestep(BACKWARD, SINGLE);
}
void forwardstep8() {
myStepper8->onestep(FORWARD, SINGLE);
}
void backwardstep8() {
myStepper8->onestep(BACKWARD, SINGLE);
}
// Now we'll wrap the 3 steppers in an AccelStepper object
AccelStepper stepper1(forwardstep1, backwardstep1);
AccelStepper stepper2(forwardstep2, backwardstep2);
AccelStepper stepper3(forwardstep3, backwardstep3);
AccelStepper stepper4(forwardstep4, backwardstep4);
AccelStepper stepper5(forwardstep5, backwardstep5);
AccelStepper stepper6(forwardstep6, backwardstep6);
AccelStepper stepper7(forwardstep7, backwardstep7);
AccelStepper stepper8(forwardstep8, backwardstep8);
MultiStepper steppers;
void setup()
{
Serial.begin(9600);
AFMSbota.begin(); // Start the bottom shield
AFMStop.begin(); // Start the top shield
AFMSbotb.begin(); // Start the bottom shield
AFMSbotc.begin(); // Start the bottom shield
stepper1.setMaxSpeed(500.0);
stepper2.setMaxSpeed(500.0);
stepper3.setMaxSpeed(500.0);
stepper4.setMaxSpeed(500.0);
stepper5.setMaxSpeed(500.0);
stepper6.setMaxSpeed(500.0);
stepper7.setMaxSpeed(500.0);
stepper8.setMaxSpeed(500.0);
steppers.addStepper(stepper1);
steppers.addStepper(stepper2);
steppers.addStepper(stepper3);
steppers.addStepper(stepper4);
steppers.addStepper(stepper5);
steppers.addStepper(stepper6);
steppers.addStepper(stepper7);
steppers.addStepper(stepper8);
}
void loop()
{
long positions[8]; // Array of desired stepper positions
myStepper1->step(800, FORWARD, SINGLE);
myStepper1->release();
delay(10);
myStepper2->step(1000, BACKWARD, SINGLE);
myStepper2->release();
delay(10);
myStepper1->step(800, FORWARD, SINGLE);
myStepper1->release();
delay(10);
positions[7] = 100;
positions[6] = -300;
positions[5] = 200;
positions[4] = -100;
positions[3] = 500;
positions[2] = -300;
positions[1] = 400;
positions[0] = -400;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
myStepper1->release();
myStepper2->release();
myStepper3->release();
myStepper4->release();
myStepper5->release();
myStepper6->release();
myStepper7->release();
myStepper8->release();
delay(300);
positions[7] = -600;
positions[6] = 600;
positions[5] = 800;
positions[4] = -300;
positions[3] = 1200;
positions[2] = 1300;
positions[1] = -500;
positions[0] = -700;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
myStepper1->release();
myStepper2->release();
myStepper3->release();
myStepper4->release();
myStepper5->release();
myStepper6->release();
myStepper7->release();
myStepper8->release();
delay(300);
}