hi
i think i’m trying to do a simple thing but i can’t quite work it out. i’ve tried to adapt several examples i’ve looked at in the IDE and on the forum, so far to no avail.
i have 3 steppers, each with its own big easy driver, controlled via the accepstepper library. each motor needs to run for X steps, then pause X time, then restart again. i have it working fine as a constant loop - i.e. no pause - but as soon as i start trying to put a delay in the timings all go to pot and the motors are stopping and starting when i don’t want them to.
this is the code i am working with. if someone could give me a pointer as to where the delay should go (or if i should even use a delay) i’d be very grateful.
#include <AccelStepper.h>
AccelStepper stepper1(1, 2, 1);
AccelStepper stepper2(1, 6, 5);
AccelStepper stepper3(1, 10, 9);
void setup()
{
pinMode(3, OUTPUT); //MS3 - stepper1
digitalWrite(3, LOW);
pinMode(4, OUTPUT); //MS2 - stepper1
digitalWrite(4, LOW);
pinMode(7, OUTPUT); //MS3 - stepper2
digitalWrite(7, LOW);
pinMode(8, OUTPUT); //MS2 - stepper2
digitalWrite(8, LOW);
pinMode(11, OUTPUT); //MS3 - stepper3
digitalWrite(11, LOW);
pinMode(12, OUTPUT); //MS2 - stepper3
digitalWrite(12, LOW);
pinMode(1, OUTPUT); //direction
digitalWrite(1, LOW);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
pinMode(5, OUTPUT); //direction
digitalWrite(5, LOW);
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
pinMode(9, OUTPUT); //direction
digitalWrite(9, LOW);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
stepper1.setMaxSpeed(895); //kepler 10-b
stepper1.setAcceleration(40);
//stepper1.move(1000);
stepper2.setMaxSpeed(919); //55 cnc e
stepper2.setAcceleration(40);
//stepper2.move(1200);
stepper3.setMaxSpeed(686); //GJ 1132b
stepper3.setAcceleration(40);
//stepper3.move(1000);
}
void loop()
{
if (stepper1.distanceToGo() == 0)
{
stepper1.move(1000);
}
if (stepper2.distanceToGo() == 0)
{
stepper2.move(1200);
}
if (stepper3.distanceToGo() == 0)
{
stepper3.move(1000);
}
stepper1.run();
stepper2.run();
stepper3.run();
}