A 3D Printed Electro-Mechanical Seven Segment Display Using Only One Motor.

A mechanical decade counter, 3D printed.


Creative Commons Attribution Noncommercial Share Alike

Commercial use is not allowed, you must attribute the creator, you may remix this work and the remixed work should be made available under this license.

Learn more or download attribution tags


Via followers of mine I've received a number of links to electro-mechanical seven segment displays created from cardboard or Legos using quite a few servos and/or motors to simulate a seven segment LED display, and most if not all were not quite what one would consider to be a "low profile" design. I was then challenged by one follower to attempt to create a low profile design of an electro-mechanical seven segment decade counter driven by a single motor, and "A 3D Printed Seven Segment Electro-Mechanical Single Motor Driven Display" is my answer to the challenge.

In my design, an Adafruit ESP32 drives an inexpensive stepper motor and driver, which in turn drives two slotted cams (one controlling the A, B, F and G segments, and a second controlling the C, D and E segments) such that the model counts from 0 through 9 repeatedly (a decade counter) via a single stepper motor. Seven "slides" follow specific cam slots in order to swing the seven segments in and out of view, and a mere 3.5mm deflection of a slide results in a 90 degree movement of its respective segment.

I plan on expanding this design to create a large format hours and minutes clock.

As usual I probably forgot a file or two or who knows what else, so if you have any questions, please do not hesitate to comment as I do make plenty of mistakes. Designed using Autodesk Fusion 360, sliced using Ultimaker Cura 4.10.0, and 3D printed in Ultimaker PLA on Ultimaker S5s.

Materials and methods


I acquired the following parts:

β€’ One Adafruit Feather ESP32 board.
β€’ One "6PCS 28BYJ-48 Stepper Motor Kit".
β€’ Four "uxcell 6700-2RS Deep Groove Ball Bearings Z2 10mm x 15mm x 4mm Double Sealed Chrome Steel".
β€’ One USB power supply with connector compatible with the USB connector on the ESP32 board.
β€’ One 36" length of 1.9mm music wire.

I 3D printed the following parts at .15mm layer height, 20% infill and no supports:

β€’ Two "Axle, Gear, Cam.stl".
β€’ Fourteen "Axle, Segment.stl".
β€’ Two "Bolt, 4mm.stl".
β€’ Six "Bolt, 8mm.stl".
β€’ One "Cover.stl".
β€’ One "Face.stl".
β€’ One "Gear, Cam A, B, G, F.stl".
β€’ One "Gear, Cam C, D, E.stl".
β€’ One "Gear, Cams, Drive.stl".
β€’ One "Rear.stl".
β€’ Seven "Segment.stl".
β€’ One "Slide A.stl".
β€’ One "Slide B.stl".
β€’ One "Slide C.stl".
β€’ One "Slide D.stl".
β€’ One "Slide E.stl".
β€’ One "Slide F.stl".
β€’ One "Slide G.stl".

This mechanism is a high precision print and assembly using at times very small precision 3D printed parts in confined spaces with highly precise alignment. I 3D printed all parts using the Ultimaker Cura 4.10.0 "Engineering Profile" on my Ultimaker S5s, which provides a highly accurate tolerance requiring minimal if any trimming, filing, drilling or sanding. However, prior to assembly, I still test fitted and trimmed, filed, drilled, sanded, etc. all parts as necessary for smooth movement of moving surfaces, and tight fit for non moving surfaces. Depending on your slicer, printer, printer settings and the colors you chose, more or less trimming, filing, drilling and/or sanding may be required to successfully recreate this model. I carefully filed all edges that contacted the build plate to make absolutely certain that all build plate "ooze" is removed and that all edges are smooth using small jewelers files and plenty of patience.

This mechanism also uses threaded assembly, so I used a tap and die set (4mm by 1 and 8mm by 1.25) as required for thread cleaning.

Assemble the Face.

To assemble the face, I performed the following steps:

β€’ Using a handheld rotary tool with a cutoff blade, I cut seven 10mm lengths of 1.9mm music wire then removed the bur from the one end and rounded the other end of each of the seven pins.
β€’ Pressed one pin into each of the seven "Slide A.stl", "Slide B.stl", "Slide C.stl", "Slide D.stl", "Slide E.stl", "Slide F.stl" and "Slide G.stl" such that pin will engage into "Segment.stl" when installed.
β€’ Slide the pin on slide A into the slot in one of the segments, then slid the assembly into position in "Face.stl".
β€’ Secured the segment to the face using two "Axle, Segment.stl".
β€’ Made certain the slide and segment moved with ease from fully open to fully closed and filed / sanded as necessary if the movement was rough.
β€’ Repeated the previous three steps for the remaining slides and segments.

Assemble the Rear.

To assemble the rear, I performed the following steps:

β€’ Pressed two bearings into both "Gear, Cam, A, B, G, F.stl" and "Gear, Cam, C, D, E.stl" (one on top and the remaining on the bottom) such that the bearings were flush with the top and bottom of the gear / cams.
β€’ Secured the stepper motor to "Rear.stl" using two "Bolt, 4mm.stl".
β€’ Pressed "Gear, Cams, Drive.stl" onto the stepper motor shaft.
β€’ Inserted one "Axle, Gear, Cam.stl" into the upper axle mounting hole in the rear assembly, then pressed the "abgf" gear / cam assembly onto the axle such that the large arrow was pointing straight up.
β€’ Inserted the remaining gear / cam axle into the lower axle mounting hole in the rear assembly, then pressed the "cde" gear / cam assembly onto the axle such that the large arrow was pointing straight up.
β€’ Carefully rotated the cam drive gear verifying the two arrows are perfectly aligned and if not, removed a gear, aligned the arrow with the remaining gear, then replaced the gear.

Final Assembly.

For final assembly, I performed the following steps:

β€’ Made certain both gear / cam arrows were pointing up (the "0" position).
β€’ Opened the segment g.
β€’ Positioned the rear assembly over the face assembly, carefully lowered it down onto the face assembly, then secured both axles to the face assembly.
β€’ Positioned "Cover.stl" over the assembly, carefully lowered it down onto the assembly, then secured in place with six "Bolt, 8mm.stl".


've included the Arduino environment file "Software.ino" containing the very simple software required to cycle the display from 0 through 9 and back to 0. This software needs to be complied and downloaded to the Adafruit ESP32 board.

The software should be fairly easy to understand, but if you have a question, please feel free to comment and I will do my best to answer.


The stepper motor kit came with plenty of jumpers to wire the display, so I:

β€’ Connected a blue jumper between the ESP32 A6 pin and the stepper motor driver IN1 pin.
β€’ Connected a green jumper between the ESP32 A7 pin and the stepper motor driver IN2 pin.
β€’ Connected a yellow jumper between the ESP32 A8 pin and the stepper motor driver IN3 pin.
β€’ Connected an orange jumper between the ESP32 A9 pin and the stepper motor driver IN4 pin.
β€’ Connected a black jumper between the ESP32 GND pin and the stepper motor driver "-" pin.
β€’ Connected a red jumper between the ESP32 USB pin and the stepper motor driver "+" pin.

With the software downloaded and the wiring complete, I attached the usb power supply to the usb port on the ESP32 and the display began to cycle from 0 through 9 and back to 0.

And that is how I 3D printed, assembled, programmed and wired this large format electro-mechanical seven segment display.

I hope you enjoyed it!



Issues are used to track todos, bugs or requests. To get started, you could create an issue.


029db3d771dcd447543f5cad16e67a63?default=blank&size=40Eddiie added this to the ElectroMechanical collection ago
Ed1405f3932be444a8114e2236ed1d0f?default=blank&size=40H. Javier Jaramillo Robles added this to the Mech collection ago
Mini lora and iGreg Zumwalt published this design ago