Skip to content

Instantly share code, notes, and snippets.

@InputBlackBoxOutput
Created January 30, 2026 21:03
Show Gist options
  • Select an option

  • Save InputBlackBoxOutput/7737612b0a90ef6c0aed5af9cd6ae8ed to your computer and use it in GitHub Desktop.

Select an option

Save InputBlackBoxOutput/7737612b0a90ef6c0aed5af9cd6ae8ed to your computer and use it in GitHub Desktop.

Revisions

  1. InputBlackBoxOutput created this gist Jan 30, 2026.
    80 changes: 80 additions & 0 deletions stepper.ino
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@
    // Defines pins numbers
    #define NUM_AXIS 3
    #define ENABLE 8
    #define STEP_X 2
    #define DIRECTION_X 5
    #define STEP_Y 3
    #define DIRECTION_Y 6
    #define STEP_Z 4
    #define DIRECTION_Z 7

    int stepPin = 0;
    int directionPin = 0;

    void moveStepperMotor(char axis, char direction, int steps) {
    switch (axis) {
    case 'X':
    {
    stepPin = STEP_X;
    directionPin = DIRECTION_X;
    break;
    }
    case 'Y':
    {
    stepPin = STEP_Y;
    directionPin = DIRECTION_Y;
    break;
    }
    case 'Z':
    {
    stepPin = STEP_Z;
    directionPin = DIRECTION_Z;
    break;
    }
    }

    // Set direction GPIO
    if (direction == '+') {
    digitalWrite(directionPin, HIGH);
    } else {
    digitalWrite(directionPin, LOW);
    }

    // Generate signal for step GPIO
    for (int x = 0; x < steps; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(200);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(200);
    }
    }

    void setup() {
    Serial.begin(115200);

    // Step step and direction GPIO conneted to stepper motor drivers
    pinMode(DIRECTION_X, OUTPUT);
    pinMode(DIRECTION_Y, OUTPUT);
    pinMode(DIRECTION_Z, OUTPUT);

    pinMode(STEP_X, OUTPUT);
    pinMode(STEP_Y, OUTPUT);
    pinMode(STEP_Z, OUTPUT);

    // Enable all stepper drivers
    pinMode(ENABLE, OUTPUT);
    digitalWrite(ENABLE, LOW);

    }


    void loop() {
    moveStepperMotor('X', '+', 4000);
    moveStepperMotor('X', '-', 4000);

    moveStepperMotor('Y', '+', 4000);
    moveStepperMotor('Y', '-', 4000);

    moveStepperMotor('Z', '+', 4000);
    moveStepperMotor('Z', '-', 4000);
    }