I want to use this library: https://www.arduino.cc/en/Reference/Stepper

#include <Stepper.h>

The wiring for my driver is shown here:

enter image description here


From the library, I'm stuck at the motor pins:

#define motorSteps 200
#define motorPin1 2    // STEP pin
#define motorPin2 3    // DIR pin

Stepper myStepper(motorSteps, motorPin1, motorPin2);

Is this library not compatible with this stepper motor driver? Or what needs to be defined for it to work?

More details on the library are here: http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors

The basic section of my code that works without the library is this:

digitalWrite(stepPin, HIGH);
digitalWrite(stepPin, LOW);

Yet, the two-wire circuit part of the library uses motorPin1 and motorPin2 in a way I don't understand:

switch (thisStep) {
  case 0:  // 01
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, HIGH);
  case 1:  // 11
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, HIGH);
  case 2:  // 10
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, LOW);
  case 3:  // 00
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);


How should motorPin1 and motorPin2 be defined?

1 Answer 1


That library is not compatible with the A4988. It is intended to do the same job that the A4988 does. You provide a step direction and an instruction to step, and it does the stepping for you.

To use the A4988 you just set a pin HIGH or LOW for the direction, then toggle another pin to make it step. You don't really need a library for that.

However if you do want to abstract it with a library and add lots of cool extra features then you should look at AccelStepper which supports 2-wire drivers like the A4988.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.