Code: Select all
#include <Wire.h>
#include <Adafruit_MotorShield.h>
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);
Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);
void setup() {
AFMS.begin();
myMotor->setSpeed(400); // 10 rpm
myMotor1->setSpeed(400); // 10 rpm
}
void loop() {
if (digitalRead(12) == 1) {
myMotor->step(20, FORWARD, DOUBLE);
}
if (digitalRead(10) == 1) {
myMotor1->step(20, BACKWARD, DOUBLE);
}
}
I also tried the Accel_MultiStepper code:
Code: Select all
#include <AccelStepper.h>
#include <Wire.h>
#include <Adafruit_MotorShield.h>
Adafruit_MotorShield AFMStop(0x60); // Default address, no jumpers
Adafruit_StepperMotor *myStepper1 = AFMStop.getStepper(200, 1);
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 2);
void forwardstep1() {
myStepper1->onestep(FORWARD, DOUBLE);
}
void backwardstep1() {
myStepper1->onestep(BACKWARD, DOUBLE);
}
// wrappers for the second motor!
void forwardstep2() {
myStepper2->onestep(FORWARD, DOUBLE);
}
void backwardstep2() {
myStepper2->onestep(BACKWARD, DOUBLE);
}
AccelStepper stepper1(forwardstep1, backwardstep1);
AccelStepper stepper2(forwardstep2, backwardstep2);
void setup()
{
AFMStop.begin(); // Start the top shield
stepper1.setMaxSpeed(400.0);
stepper1.setAcceleration(1000.0);
// stepper1.moveTo(100);
stepper2.setMaxSpeed(400.0);
stepper2.setAcceleration(1000.0);
stepper2.moveTo(300);
}
void loop()
{
if (digitalRead(12) == 1) {
stepper1.moveTo(stepper1.currentPosition() + 50);
}
if (digitalRead(10) == 1) {
stepper1.moveTo(stepper1.currentPosition() - 50);
}
if (stepper2.distanceToGo() == 0) {
stepper2.moveTo(-stepper2.currentPosition());
}
stepper1.run();
stepper2.run();
}
I need them to act independently and not affect the performance of each other. They will have 8-way type joystick input, so either one or both motors could be running at any one time.
Can anyone get me started in the right direction?
Benjamin