#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::DRIVER, 9, 10);
bool homeStat = false;
void setup() {
// put your setup code here, to run once:
stepper1.setMaxSpeed(200.0);
stepper1.setAcceleration(500.0);
pinMode(12, INPUT_PULLUP);
pinMode(13, OUTPUT);
Serial.begin(115200);
}
void loop() {
if (!homeStat) {
goHome(12, homeStat);
}
else {
digitalWrite(13, HIGH);
moveXY(100 * 16, 0, homeStat);
moveXY(-100 * 16, 0, homeStat);
}
}
void goHome(int homePin, bool &isHome) {
bool home = digitalRead(homePin);
if (!isHome) {
stepper1.run();
if (home) {
stepper1.moveTo(-999999);
}
else {
stepper1.setCurrentPosition(0);
stepper1.stop();
isHome = true;
}
}
}
void moveXY(float X, float Y, int servoPin) {
if (homeStat) {
if (!stepper1.isRunning()) {
stepper1.moveTo(stepper1.currentPosition() + X);
stepper1.runToPosition();
}
else {
stepper1.stop();
}
}
else {
goHome(12, homeStat);
}
}