A stepper driver sits between your controller and a stepper motor. The controller sends one pulse for each step and sets the direction, and the driver turns that into the coil current the motor needs. This is an A4988-compatible driver on the standard StepStick board, the same 16-pin size and pin order used by RAMPS 1.4, CNC Shield V3 and V4 and many 3D printer boards, so it plugs straight into those sockets. The headers come soldered on, and a stick-on aluminium heatsink is in the bag.
It runs one 4-wire bipolar stepper such as a NEMA 17 from an 8 to 32V supply. The logic side takes 3.3V or 5V, so it also suits an Arduino, ESP32 or Raspberry Pi Pico build, wired with jumper leads or plugged into a breadboard. You set the motor current with the small screw on the board before the first run. It does not drive 5-wire motors like the 28BYJ-48, which use the ULN2003 board in our 28BYJ-48 kit. For a quieter 3D printer, the TMC2209 driver fits the same socket, and our driver guide compares the two.
Specifications
Datasheets
Wiring & getting started
- Plug in or wire up
On a RAMPS 1.4 or CNC shield, line up the EN corner of the driver with the EN mark beside the socket and push it in. The board does the rest of the wiring, so go to step 3. For your own build, carry on with step 2.
- Wire it to an Arduino
Connect your motor supply to VMOT and GND, with a 100uF capacitor across them close to the pins (the stripe side to GND). Use a capacitor rated above your supply voltage, for example 35V or more for a 24V supply. Connect one motor coil to 1A and 1B and the other to 2A and 2B (the top of the board prints 1B and 2B as B1 and B2). The two wires of one coil read a few ohms to each other on a multimeter. Then connect VDD to the Arduino's 5V, the GND beside it to the Arduino's GND, STEP to D3 and DIR to D4, and join RST to SLP with a short wire. Leave EN and MS1 to MS3 unconnected for full steps.
- Set the motor current
With power on and the motor still, measure the voltage between the metal top of the small screw and GND. The two small resistors beside the chip are marked R100, so the voltage to set is your motor's current x 0.8, and a 1A motor needs 0.8V. Clockwise raises it. Start low and go up only if the motor misses steps.
- Fit the heatsink
Peel the backing and press the heatsink onto the square chip, keeping it clear of the pins around the edge.
- Run the test code
Upload this sketch to a Nano or Uno. No library is needed.
Example Arduino codeArduino C++
// A4988 test: one turn forward, one turn back // STEP to D3, DIR to D4, RST joined to SLP const int STEP_PIN = 3; const int DIR_PIN = 4; const int STEPS_PER_TURN = 200; // 1.8 degree motor, full step void turn(bool forward) { digitalWrite(DIR_PIN, forward ? HIGH : LOW); for (int i = 0; i < STEPS_PER_TURN; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(1000); digitalWrite(STEP_PIN, LOW); delayMicroseconds(1000); } } void setup() { pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); } void loop() { turn(true); delay(500); turn(false); delay(500); } - Check it works
The motor turns one full turn, pauses for half a second, turns one full turn back, and repeats. If it buzzes or shakes without turning, the coil wires are mixed up, so check which pairs read a few ohms and wire each pair to 1A/1B or 2A/2B. If it turns the other way to what you want, swap the 1A and 1B wires. If nothing happens, check the RST to SLP link and the motor supply.
Note: Never plug or unplug the motor while the motor supply is on. The voltage spike destroys the driver.

