#include <AccelStepper.h>
// Define pins for stepper motor
#define STEP_PIN 2
#define DIR_PIN 3
#define ENABLE_PIN 4
// Define pins for joystick
#define JOY_X A0
#define JOY_Y A1
// Create stepper motor object
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
// Set up pins for stepper motor
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW); // Enable the stepper motor driver
// Set up serial communication for debugging
Serial.begin(9600);
// Set up stepper motor properties
stepper.setMaxSpeed(1000.0);
stepper.setAcceleration(500.0);
}
void loop() {
// Read joystick values
int joyX = analogRead(JOY_X);
int joyY = analogRead(JOY_Y);
// Map joystick values to stepper motor steps
int mappedX = map(joyX, 0, 1023, -500, 500);
int mappedY = map(joyY, 0, 1023, -500, 500);
// Set stepper motor speed based on joystick values
stepper.setSpeed(mappedX);
// Move the stepper motor based on joystick Y-axis
if (abs(mappedY) > 50) {
stepper.runSpeed();
} else {
stepper.stop();
}
// Print values for debugging
Serial.print("JoyX: ");
Serial.print(joyX);
Serial.print("\t JoyY: ");
Serial.print(joyY);
Serial.print("\t MappedX: ");
Serial.print(mappedX);
Serial.print("\t MappedY: ");
Serial.println(mappedY);
delay(10); // Add a short delay for stability
}