#include <AccelStepper.h>
#include <MultiStepper.h>
#define stepsPerRevolution 800
#define motorCount 4
#define maxSpeed 1000
bool target = false;
int line = 0;
AccelStepper motors[]={
{1,2,3},
{1,5,6},
{1,8,9},
{1,11,12},
};
MultiStepper steppers;
long revs[motorCount];
void setup() {
//initialise serial coms.
Serial.begin(9600);
Serial.println("rev1,rev2,rev3,rev4 +ve for cw, -ve for ccw");
Serial.println("eg: 2,2,-0.5,-0.5 is two revolutions clockwise on motors 1&2 and half a revolution ccw on motors 3&4.");
for (int i=0; i<motorCount; i++){
motors[i].setMaxSpeed(maxSpeed);
steppers.addStepper(motors[i]);
}
}
void loop() {
// does not block, allows user to modify position before target is reached
steppers.run();
// does block, allows user to modify position only after target is reached
//steppers.runSpeedToPosition();
for(int i=0; i<motorCount; i++){
if (motors[i].distanceToGo() == 0 && target == true){
Serial.println("next");
target = false;
delay(2500);
}
}
}
void serialEvent() {
for (int i=0; i<motorCount; i++){
revs[i] = round(stepsPerRevolution*(Serial.readStringUntil(',').toFloat()));
}
steppers.moveTo(revs);
target = true;
//for (int i=0; i<motorCount-1; i++){
// Serial.print(revs[i]/800);
// Serial.print(",");
//}
//Serial.println(revs[motorCount-1]/800);
}