28BYJ-48 stepper with Arduino Uno R3

Wiring for the 28BYJ-48 stepper + ULN2003 driver on the Arduino Uno R3 (ATmega328P, 5 V logic), chosen with the same pin rules BoardPilot uses: default buses first, and no pins that are used for flash, USB, the debugger or booting.

Wiring

28BYJ-48 stepper pinRoleArduino Uno R3 pinNotes
IN1Input to the part2 (PD2)
IN2Input to the part~3 (PD3)
IN3Input to the part4 (PD4)
IN4Input to the part~5 (PD5)
-GroundGND
+Power5VMotor supply 5 V: use 5V (about 240 mA)

Check before you power it on

Test code (Arduino)

// Library: Stepper (built in)
#include <Stepper.h>

// 2048 steps per turn; note the IN1, IN3, IN2, IN4 order for this motor
Stepper motor(2048, 2, 4, 3, 5);

void setup() {
  motor.setSpeed(10);  // rpm
}

void loop() {
  motor.step(2048);   // one turn
  delay(500);
  motor.step(-2048);  // and back
  delay(500);
}

Arduino board: arduino:avr:uno.

Questions

Which Arduino Uno R3 pins do I use for the 28BYJ-48 stepper?

IN1 → 2 (PD2), IN2 → ~3 (PD3), IN3 → 4 (PD4), IN4 → ~5 (PD5), - → GND, + → 5V.

Does the 28BYJ-48 stepper work with the Arduino Uno R3 at 5 V?

Yes: the 28BYJ-48 stepper runs at 5 V and the Arduino Uno R3 uses 5 V signals, so no level shifting is needed.

BoardPilot checks this wiring in 3D as you build it, and finds crossed or missing wires on the real board.

Download BoardPilot

Full Arduino Uno R3 pinout · 28BYJ-48 stepper + ULN2003 driver: all pins and data

The 28BYJ-48 stepper on other boards

Other parts on the Arduino Uno R3