58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
// AFMotor_MultiStepper.pde
|
|
// -*- mode: C++ -*-
|
|
//
|
|
// Control both Stepper motors at the same time with different speeds
|
|
// and accelerations.
|
|
// Requires the AFMotor library (https://github.com/adafruit/Adafruit-Motor-Shield-library)
|
|
// Caution, does not work with Adafruit Motor Shield V2
|
|
// See https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library
|
|
// for examples that work with Adafruit Motor Shield V2.
|
|
|
|
#include <AccelStepper.h>
|
|
#include <AFMotor.h>
|
|
|
|
// two stepper motors one on each port
|
|
AF_Stepper motor1(200, 1);
|
|
AF_Stepper motor2(200, 2);
|
|
|
|
// you can change these to DOUBLE or INTERLEAVE or MICROSTEP!
|
|
// wrappers for the first motor!
|
|
void forwardstep1() {
|
|
motor1.onestep(FORWARD, SINGLE);
|
|
}
|
|
void backwardstep1() {
|
|
motor1.onestep(BACKWARD, SINGLE);
|
|
}
|
|
// wrappers for the second motor!
|
|
void forwardstep2() {
|
|
motor2.onestep(FORWARD, SINGLE);
|
|
}
|
|
void backwardstep2() {
|
|
motor2.onestep(BACKWARD, SINGLE);
|
|
}
|
|
|
|
// Motor shield has two motor ports, now we'll wrap them in an AccelStepper object
|
|
AccelStepper stepper1(forwardstep1, backwardstep1);
|
|
AccelStepper stepper2(forwardstep2, backwardstep2);
|
|
|
|
void setup()
|
|
{
|
|
stepper1.setMaxSpeed(200.0);
|
|
stepper1.setAcceleration(100.0);
|
|
stepper1.moveTo(24);
|
|
|
|
stepper2.setMaxSpeed(300.0);
|
|
stepper2.setAcceleration(100.0);
|
|
stepper2.moveTo(1000000);
|
|
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// Change direction at the limits
|
|
if (stepper1.distanceToGo() == 0)
|
|
stepper1.moveTo(-stepper1.currentPosition());
|
|
stepper1.run();
|
|
stepper2.run();
|
|
}
|