Geared clock and indicator dials
The fine 4096-half-step resolution and low speed make it well suited to driving analog-style clock hands, gauge needles, or slowly rotating indicator dials.
A 5V unipolar geared stepper motor: 4 phases, 5 wires, and a 1/64 reduction gearbox for fine, low-speed positioning, almost always driven through a ULN2003 board.

The 28BYJ-48 is a small permanent-magnet stepper motor with a built-in reduction gearbox. The '28' refers to its 28mm diameter body. It is a 4-phase unipolar design brought out on five wires: four coil phases (blue, pink, yellow, orange) plus a red center-tap common that ties to +5V. It is one of the most common motors in Arduino starter kits because it is inexpensive and positions precisely at low speed.
The motor pairs an internal stride angle of 5.625 degrees with a 1/64 gear reduction (datasheet value), so the output shaft advances roughly 0.088 degrees per half-step. That works out to about 4096 half-steps (HALF4WIRE) or 2048 full-steps (FULL4WIRE) per output-shaft revolution. The trade-off is that it is slow (typically around 15 RPM) and low-torque, so it is meant for precise positioning rather than speed or driving heavy loads.
Because it is unipolar, the red wire connects to +5V and the four phase wires are switched to ground in sequence. A ULN2003 Darlington-array board is the standard driver: it sinks the coil current the microcontroller cannot, and its built-in flyback diodes clamp the inductive kickback from the coils. The Arduino simply toggles four GPIO pins (IN1 to IN4) in a stepping sequence.
| Pin | Function | Type |
|---|---|---|
BLUE Blue phase | Digital Coil phase 1 | Free |
PINK Pink phase | Digital Coil phase 2 | Free |
YELLOW Yellow phase | Digital Coil phase 3 | Free |
ORANGE Orange phase | Digital Coil phase 4 | Free |
RED_COM Red / +5V common | Power | Power in |
Verified from the Tinkered component library · Generic / Mouser STEP-D01.
The 28BYJ-48 Stepper connects to any of the microcontrollers supported in Tinkered. Mind the 5 V logic level on 3.3 V boards.
The 28BYJ-48 needs a ULN2003 or equivalent transistor array. Each phase draws far more current than a GPIO pin can safely source or sink, so connecting coils directly stalls the motor and can damage the pin.
One output revolution is about 2048 full-steps but about 4096 half-steps. Using the wrong steps-per-revolution in code (for example passing 2048 to a HALF4WIRE setup) makes every commanded rotation half or double the intended angle.
The IN1 to IN4 to coil mapping and the stepping sequence must match. A swapped or scrambled phase order makes the motor vibrate in place, run rough, or spin the wrong direction instead of rotating smoothly.
The current spikes when phases switch can drop the rail and reset the board. Feed the ULN2003 board from a separate 5V supply and only share ground with the Arduino.
This is a heavily geared, low-torque motor that tops out around 15 RPM. Pushing the step rate above its pull-in frequency causes missed steps and stalling, and it cannot move heavy mechanical loads.
The fine 4096-half-step resolution and low speed make it well suited to driving analog-style clock hands, gauge needles, or slowly rotating indicator dials.
Paired with a ULN2003 and a small pulley, it can open and close light window coverings on a schedule or button press without needing precise speed control.
Its precise angular steps are handy for slowly panning a lightweight camera or sensor to a repeatable position.
A common build spins a small object or product on a platform at a slow, steady rate for photography or a showcase.
Because the output shaft holds position between steps, it is used for dial pointers, small valve or knob actuators, and other repeatable low-load positioning tasks.
Drop the 28BYJ-48 Stepper into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.