#include <Stepper.h>
// Define the number of steps per revolution
const int stepsPerRevolution = 200;
// Define the motor pin connections
#define motorPin1 2 // IN1 on the ULN2003 driver
#define motorPin2 3 // IN2 on the ULN2003 driver
#define motorPin3 4 // IN3 on the ULN2003 driver
#define motorPin4 5 // IN4 on the ULN2003 driver
// Define LED pin
#define ledPin 13
// Define push button pins
#define buttonPin1 6
#define buttonPin2 7
// Define potentiometer pin
#define potPin A0
// Create a stepper object
Stepper myStepper(stepsPerRevolution, motorPin1, motorPin2, motorPin3, motorPin4);
void setup() {
// Set motor speed (initially)
int motorSpeed = analogRead(potPin); // Read initial potentiometer value
myStepper.setSpeed(map(motorSpeed, 0, 1023, 0, 100)); // Map potentiometer value to motor speed
// Set LED pin as output
pinMode(ledPin, OUTPUT);
// Set push button pins as inputs
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
}
void loop() {
// Read potentiometer value and map it to motor speed
int motorSpeed = analogRead(potPin);
myStepper.setSpeed(map(motorSpeed, 0, 1023, 0, 100));
// Check if push button 1 is pressed
if (digitalRead(buttonPin1) == LOW) {
digitalWrite(ledPin, HIGH); // Turn on LED
myStepper.step(stepsPerRevolution / 10); // Rotate motor by 1/10th of a revolution
delay(100); // Delay for button debounce
}
// Check if push button 2 is pressed
if (digitalRead(buttonPin2) == LOW) {
digitalWrite(ledPin, LOW); // Turn off LED
myStepper.step(-stepsPerRevolution / 10); // Rotate motor in reverse by 1/10th of a revolution
delay(100); // Delay for button debounce
}
}