#include "AccelStepper.h"
AccelStepper stepperX(1, 2, 3);
#define home_switch 9
long TravelX;
long initial_homing = -1;
void setup() {
Serial.begin(9600);
pinMode(home_switch, INPUT_PULLUP);
delay(5);
stepperX.setMaxSpeed(100.0);
stepperX.setAcceleration(100.0);
Serial.print("Stepper is Homing . . . . . . . . . . . ");
while (digitalRead(home_switch)) {
stepperX.moveTo(initial_homing);
initial_homing--;
stepperX.run();
delay(5);
}
stepperX.setCurrentPosition(0); // Set the current position to 0 after homing
stepperX.setMaxSpeed(100.0);
stepperX.setAcceleration(100.0);
initial_homing = 1;
while (!digitalRead(home_switch)) {
stepperX.moveTo(initial_homing);
stepperX.run();
initial_homing++;
delay(5);
}
stepperX.setCurrentPosition(0); // Set the current position to 0 after homing
Serial.println("Homing Completed");
Serial.println("");
stepperX.setMaxSpeed(1000.0);
stepperX.setAcceleration(1000.0);
Serial.println("Enter Travel distance (Positive for CW / Negative for CCW and Zero for back to Home): ");
}
void loop() {
long move_finished = 0;
while (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
if (input.length() > 0) {
TravelX = input.toInt();
if (TravelX < 0 || TravelX > 5000) {
Serial.println("Invalid input. Please enter a valid value.");
} else {
Serial.print("Moving stepper into position: ");
Serial.println(TravelX);
stepperX.moveTo(TravelX);
delay(1000);
move_finished = 1;
}
}
}
if (TravelX >= 0 && TravelX <= 5000) {
if (stepperX.distanceToGo() != 0) {
stepperX.run();
}
if (move_finished == 1 && stepperX.distanceToGo() == 0) {
Serial.println("COMPLETED!");
Serial.println("");
Serial.println("Enter Travel distance (Positive for CW / Negative for CCW and Zero for back to Home): ");
}
}
}