#include <AccelStepper.h>
// Pin definitions
const int BUTTON_PIN = 10; // Button pin
const int RELAY_PIN = 2; // Relay pin
const int STEP_PIN = 12; // Stepper motor step pin
const int DIRECTION_PIN = 11; // Stepper motor direction pin
// Motor settings
const int MOTOR_SPEED = 500; // Motor speed in steps per second
const int MAX_SPEED = 4000; // Maximum motor speed
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIRECTION_PIN); // Define stepper with DRIVER mode
void setup() {
pinMode(BUTTON_PIN, INPUT); // Set button pin as input
pinMode(RELAY_PIN, OUTPUT); // Set relay pin as output
stepper.setMaxSpeed(MAX_SPEED); // Set maximum speed for the stepper motor
Serial.begin(9600); // Initialize serial communication
Serial.println("System Initialized");
}
void loop() {
// Set motor speed and run continuously
stepper.setSpeed(MOTOR_SPEED);
stepper.runSpeed();
// Check button state and control relay
if (digitalRead(BUTTON_PIN) == HIGH) {
activateMotor();
} else {
deactivateMotor();
}
}
void activateMotor() {
digitalWrite(RELAY_PIN, HIGH); // Turn on relay
Serial.println("Motor On");
}
void deactivateMotor() {
digitalWrite(RELAY_PIN, LOW); // Turn off relay
Serial.println("Motor Off");
}