45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
|
// 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 <AccelStepper.h>
|
||
|
#include <MultiStepper.h>
|
||
|
|
||
|
// 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);
|
||
|
}
|