When they do work, I have noticed that the power still seems to die when my code does a 2 second delay. Even the power indicator on my power supply goes out - not just the motor shields LED. When I remove one shield, and only run 2 steppers, I notice no issues - the power stays on as I believe it should.
I am using a 12 volt 5 amp power supply. I have tried switching it out, and switching out the arduino. I have reversed the stacking of the shields.
I tried to upload a video showing this problem with this post, but I got an error, so I guess it doesn't allow that.
Below is my very basic code, only slightly modified from the sample code.
Any ideas? Thanks!
Code: Select all
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
Adafruit_MotorShield AFMSbot(0x61); // Rightmost jumper closed
Adafruit_MotorShield AFMStop(0x60); // Default address, no jumpers
// On the top shield, connect two steppers, each with 200 steps
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);
// On the bottom shield connect a stepper to port M3/M4 with 200 steps
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 1);
Adafruit_StepperMotor *myStepper4 = AFMSbot.getStepper(200, 2);
void setup() {
while (!Serial);
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("MMMMotor party!");
AFMSbot.begin(); // Start the bottom shield
AFMStop.begin(); // Start the top shield
}
int i;
void loop() {
for (i=0; i<600; i++) {
myStepper1->onestep(FORWARD, DOUBLE);
myStepper2->onestep(FORWARD, DOUBLE);
myStepper3->onestep(FORWARD, DOUBLE);
myStepper4->onestep(FORWARD, DOUBLE);
delay(3);
}
delay(2000);
for (i=600; i>0; i--) {
myStepper1->onestep(BACKWARD, DOUBLE);
myStepper2->onestep(BACKWARD, DOUBLE);
myStepper3->onestep(BACKWARD, DOUBLE);
myStepper4->onestep(BACKWARD, DOUBLE);
delay(3);
}
delay(2000);
return;
for (i=0; i<255; i++) {
myStepper1->onestep(FORWARD, DOUBLE);
myStepper2->onestep(BACKWARD, INTERLEAVE);
myStepper3->onestep(FORWARD, MICROSTEP);
delay(3);
}
for (i=255; i!=0; i--) {
myStepper1->onestep(BACKWARD, DOUBLE);
myStepper2->onestep(FORWARD, INTERLEAVE);
myStepper3->onestep(BACKWARD, MICROSTEP);
delay(3);
}
}