#include <AccelStepper.h>
// Define pin connections
#define dirPin 2
#define stepPin 3
#define enablePin 4
#define potPin A0
#define stopPin 5
// Create stepper motor object
AccelStepper stepper(1, stepPin, dirPin); // 1 = STEP mode
// Variables
int potValue = 0;
int motorSpeed = 0;
bool motorEnabled = true;
void setup() {
// Set pin modes
pinMode(enablePin, OUTPUT);
pinMode(stopPin, INPUT_PULLUP);
// Set up the motor
stepper.setMaxSpeed(1000); // Set maximum speed
stepper.setAcceleration(500); // Set acceleration
stepper.setEnablePin(enablePin);
stepper.setPinsInverted(false, false, true); // Set inverted pins
stepper.disableOutputs(); // Keep motor disabled initially
stepper.setMaxSpeed(1000);
}
void loop() {
// Read potentiometer value for speed control
potValue = analogRead(potPin);
// Check if motor should be stopped
if (digitalRead(stopPin) == LOW) {
motorEnabled = false;
stepper.disableOutputs(); // Disable motor
} else {
motorEnabled = true;
stepper.enableOutputs(); // Enable motor
}
// Set speed if motor is enabled
if (motorEnabled) {
stepper.setSpeed(1000);
stepper.runSpeed();
}
delay(300);
}