#include <AccelStepper.h>
// Define stepper motor pins
#define X_STEP_PIN 3
#define X_DIR_PIN 2
#define Y_STEP_PIN 5
#define Y_DIR_PIN 4
#define Z_STEP_PIN 7
#define Z_DIR_PIN 6
// Define constants
#define STEPS_PER_REV 200 // Steps per revolution of the stepper motor
#define MAX_SPEED 1000 // Maximum speed in steps per second
#define ACCELERATION 100 // Acceleration in steps per second squared
// Create stepper motor objects
AccelStepper stepperX(AccelStepper::DRIVER, X_STEP_PIN, X_DIR_PIN);
AccelStepper stepperY(AccelStepper::DRIVER, Y_STEP_PIN, Y_DIR_PIN);
AccelStepper stepperZ(AccelStepper::DRIVER, Z_STEP_PIN, Z_DIR_PIN);
void setup() {
// Initialize serial communication
Serial.begin(9600);
Serial.println("Initialized");
// Set up stepper motor properties
stepperX.setMaxSpeed(MAX_SPEED);
stepperY.setMaxSpeed(MAX_SPEED);
stepperZ.setMaxSpeed(MAX_SPEED);
stepperX.setAcceleration(ACCELERATION);
stepperY.setAcceleration(ACCELERATION);
stepperZ.setAcceleration(ACCELERATION);
// Move all steppers to the initial position
stepperX.moveTo(1200);
stepperY.moveTo(400);
stepperZ.moveTo(-1800);
}
void loop() {
// Move all motors to the target position
if (stepperX.distanceToGo() == 0 && stepperY.distanceToGo() == 0 && stepperZ.distanceToGo() == 0) {
stepperX.moveTo(-stepperX.currentPosition());
stepperY.moveTo(-stepperY.currentPosition());
stepperZ.moveTo(-stepperZ.currentPosition());
}
// Run steppers
stepperX.run();
stepperY.run();
stepperZ.run();
}