#include <AccelStepper.h>
int irPin = A5;
int c0=0, c=0;
int error = 0;
int cKeep = 30;
int mL=0,mR=0,mB=20;
int sL=0,sR=0,sB=40;
AccelStepper stepperL(1, 9, 8);
AccelStepper stepperR(1, 7, 6);
setup(){
readPath();
c0 = c;
}
loop(){
if(stepperL.distanceToGo() == 0 && stepperR.distanceToGo() == 0){
readPath();
decide();
setMotor();
}
stepperL.run();
stepperL.run();
}
void readPath(){
c = analogRead(irPin);
}
void decide(){
if(abs(c-cKeep)<abs(c0-cKeep)){
c0=c;
}else{
if(mL==mR){
adj();
}else{
swap();
}
}
}
void adj(){
if(mL==mR){
mL+= 5;
}else{
mL = mR +5;
mR = mR;
}
}
void swap(){
int tmp = mL;
mL = mR;
mR = tmp;
}
void setMotor(){
stepperL.setCurrentPosition (0);
stepperR.setCurrentPosition (0);
delay(100);
stepperL.move(mL);
stepperL.setMaxSpeed((sB*mL)/mB +1);
stepper.setAcceleration(1000);
stepperR.move(mR);
stepperR.setMaxSpeed((sB*mR)/mB +1);
stepper.setAcceleration(1000);
}