// MultiStepper.pde // -*- mode: C++ -*- // Use MultiStepper class to manage multiple steppers and make them all move to // the same position at the same time for linear 2d (or 3d) motion. #include #include // EG X-Y position bed driven by 2 steppers // Alas its not possible to build an array of these with different pins for each :-( AccelStepper stepper1(AccelStepper::FULL4WIRE, 2, 3, 4, 5); AccelStepper stepper2(AccelStepper::FULL4WIRE, 8, 9, 10, 11); // Up to 10 steppers can be handled as a group by MultiStepper MultiStepper steppers; void setup() { Serial.begin(9600); // Configure each stepper stepper1.setMaxSpeed(100); stepper2.setMaxSpeed(100); // Then give them to MultiStepper to manage steppers.addStepper(stepper1); steppers.addStepper(stepper2); } void loop() { long positions[2]; // Array of desired stepper positions positions[0] = 1000; positions[1] = 50; steppers.moveTo(positions); steppers.runSpeedToPosition(); // Blocks until all are in position delay(1000); // Move to a different coordinate positions[0] = -100; positions[1] = 100; steppers.moveTo(positions); steppers.runSpeedToPosition(); // Blocks until all are in position delay(1000); }