Retro-Futuristic Hybrid Clock
A Retro-Futuristic clock combining dual LCDs, 3-bit filament LEDs, and WS2812 effects—blending cyberpunk style with steampunk warmth.
Supplies
Raspberry PI PICO x1
ST7789 1.14 Inc x2
DS3231 x1
ULN2003 x1
WS2812 x1
FUSE 30mm x3
LED Filament x3
Inspiration & Concept
This project was born from my long-time fascination with clocks — not just as tools to tell time, but as objects of beauty.
I have always loved both retro aesthetics and modern technology, and I wanted to find a way to blend these two worlds seamlessly into a single creation. My goal was to design a clock that feels warm and nostalgic, while still harnessing the precision and flexibility of digital systems.
As someone who learned electronics in the age of digital technology, I also wanted this clock to reflect a hands-on way of thinking — combining physical hardware with digital logic. Elements like binary indicators are not only visual details, but also mental exercises, keeping the brain active and reinforcing the fundamentals of digital logic in a playful, artistic way.
I chose to emphasize the seconds display because seconds are the only part of time that never stops moving. Unlike hours and minutes, which feel calm and static, seconds are alive — they pulse, flow, and constantly remind us that time is always in motion. Through animated LEDs and light effects, I translated this continuous movement into a visual performance of time itself.
The Retro-Futuristic Hybrid Clock represents my desire to merge craftsmanship, technology, and imagination into a single piece. It is both a functional clock and a creative expression — where past aesthetics meet modern digital thinking, and where time becomes something to experience, not just to read.
What This Clock Does
The Retro-Futuristic Hybrid Clock visualizes time through three synchronized layers, combining digital displays, hardware lighting, and animated effects into a single cohesive experience.
The dual ST7789 TFT screens present the hours and minutes using custom Nixie-style digits, delivering a clean and high-contrast retro look while maintaining modern brightness and clarity.
The tens of seconds are displayed using real hardware binary outputs through illuminated filament tubes driven by a ULN2003 driver array. This third, purely physical display transforms logical binary counting into a living visual element, reinforcing the emotional blend of machinery and computation.
For the flowing motion of time, a WS2812 LED strip acts as a dynamic “second hand.” Each illuminated pixel represents the passing seconds, continuously running from 0 to 10 and looping endlessly, creating a constant sense of motion and rhythm.
All three display layers are synchronized by a Raspberry Pi Pico 2 running CircuitPython and a DS3231 real-time clock module, ensuring that every visual element updates simultaneously with precise timing.
Together, these layered displays transform time from simple numeric data into a living visual performance — not just something to be read, but something to be seen moving and evolving in space.
Designed
The Retro-Futuristic Hybrid Clock is a time-keeping project designed to merge the precision of modern digital systems with the charm of physical analog light. Inspired by a blend of Cyberpunk and Steampunk, the clock delivers a unique way of displaying time—clean on LCDs yet warm and mechanical through real hardware lighting.
Powered by a Raspberry Pi Pico 2 + CircuitPython and synced with a DS3231 RTC, the system manages multi-layer displays, binary hardware outputs, and animated light effects with impressive accuracy.
Digital Display – Dual ST7789 LCD Panels
Two ST7789 LCD screens independently display hours and minutes.
Using custom bitmap Nixie-style digits, the clock preserves a retro aesthetic with the crisp clarity of modern LCDs.
Each display is controlled through its own chip-select pin (CS1 / CS2), allowing frame-accurate switching without flicker.
Binary Output – 3-Bit Filament LEDs (GPIO Driven)
Beyond the digital visuals, the clock adds a physical analog layer for displaying the tens of seconds.
Three illuminated LED filament bulbs are driven through OUT1, OUT2, and OUT3 (GPIO 13 / 14 / 15), forming a hardware 3-bit binary counter. Instead of counting individual seconds, this binary system represents the tens of seconds position of the time display:
0s → 10s → 20s → 30s → 40s → 50s → repeat
Each full 10-second cycle of the WS2812 LED “second counter” triggers the binary output to advance by one step, updating the filament bulbs to the next binary state:
This approach converts the logical counting of time into visible hardware action — allowing observers to watch the passage of time not only as numbers on a screen, but as glowing binary patterns formed by real physical light.
The warm filament glow contrasts beautifully with the crisp digital displays, creating a visual fusion that feels like a steampunk indicator system driven by a futuristic electronic brain.
Neo-Analog Light – WS2812 (0–10 Second Timer)
A WS2812 strip lights up from LED index 2 → 9, forming a 10-second sweep.
Each LED lights for exactly 1 second, creating a smooth “progress timeline.”
When the sweep completes:
→ The binary filament LEDs increment by 1
→ Giving a deep-layer representation of sub-minute time
This fuses cyberpunk neon motion with steampunk glow, creating a hybrid visual language.
Circuit
The clock system uses a Raspberry Pi Pico2 to control all hardware in real time, featuring the following functions:
✔ 1) Dual LCD ST7789 Displays
The system uses two ST7789 TFT displays with separate CS1 and CS2 lines.
Each display operates independently and is used to show hours and minutes.
✔ 2) Nixie/Digit Style Hour–Minute Display
The digits shown on the ST7789 screens are not standard fonts.
They are rendered using custom Nixie Tube / Retro Digital graphics,
creating a vintage Nixie-style digital appearance.
✔ 3) Binary Output System (GPIO13/14/15 → ULN2003 → LED Filament)
The firmware outputs a 3-bit binary value via GP13, GP14, and GP15,
driving LED Filament tubes through a ULN2003A driver.
This output represents the tens of seconds.
Examples:
10, 20, 30, 40, 50 seconds → LEDs illuminate according to the actual binary code.
✔ 4) WS2812 Effect for 0–10 Seconds
A WS2812 (NeoPixel) LED strip is used to display a glowing “second hand”.
The animation is based on:
After 10 seconds, the effect resets and loops again.
✔ Summary of All Features
- Two ST7789 displays
- Nixie-style hour–minute digits
- Binary Output on GP13/14/15 for tens-of-seconds
- WS2812 running-pixel effect for 0–10 seconds
- High-accuracy RTC DS3231
- Synchronized dual-display updates
- Pixel-running animation on the displays
- Hardware 3-bit binary counter output
PCB
Comming Sooon
CODE
https://github.com/YakrooThai/Contests/blob/main/Instructables/Retro-Futuristic-Clock.py
🧠 Software Architecture – How the Hybrid Clock Works
The Retro-Futuristic Hybrid Clock is driven by a single CircuitPython program running on Raspberry Pi Pico.
This script synchronizes three independent display systems into one seamless clock:
- Digital Time Displays → Dual TFT screens (ST7789) for Hours and Minutes
- Binary Filament Indicators → 3 LED filaments showing the tens-of-seconds in binary
- Animated Second Sweep → WS2812 (NeoPixel) LED strip acting like a moving second-hand
All time is sourced from a highly accurate DS3231 RTC module to eliminate drift and ensure long-term stability.
🧩 Overall Program Structure
The Python code is logically divided into four major sections:
① System Initialization
Before the clock can run, all hardware peripherals must be prepared:
RTC Setup
- Initializes communication with the DS3231 Real-Time Clock module
- Provides accurate hour, minute, and second values regardless of power cycling
Display Setup
- Two independent ST7789 TFT displays are initialized using separate CS pins
- This allows:
- One dedicated screen for hours
- One dedicated screen for minutes
- Avoids flickering or screen multiplexing artifacts
LED Filament Output Pins
- Three GPIO pins used as binary data lines
- LEDs act as 3-bit binary indicators representing the values:
BinaryTens of Seconds
000
0 seconds
001
10 seconds
010
20 seconds
011
30 seconds
100
40 seconds
101
50 seconds
This creates a mechanical-looking time readout using physical light rather than digits.
NeoPixel LED Strip
- A 10-LED WS2812 strip functions as a dynamic second-hand
- Every LED corresponds to one second
- Instead of flashing numbers, the second is shown as a moving glowing point
🔁 Core Time Update Loop
The entire clock runs in a continuous real-time synchronization loop:
② Read Current Time
- Fetches the precise time from the RTC hardware every cycle
- The clock is not dependent on software timing or delay estimates
③ Digital Screen Refresh
Each screen updates only when necessary:
- Prevents over-refreshing which reduces flickering
- Raster graphics are used instead of fonts to reproduce the Nixie-style visuals
- Bitmapped digits maintain consistent resolution across devices
④ NeoPixel Second Sweep
This creates:
- A smooth LED “sweep” effect
- One LED lit per second
- Reset every 10 seconds
The result is a visual second-hand similar to mechanical clocks but with modern LED glow.
⑤ Binary Filament Counter
Every 10-second boundary updates the filament display:
Each filament corresponds to a binary weight:
- LED A → bit 0 (1)
- LED B → bit 1 (2)
- LED C → bit 2 (4)
This creates a physical binary clock embedded directly into the main timepiece.
🔂 Synchronization Across Three Displays
One of the strengths of this design is that no subsystem runs independently:
- RTC delivers authoritative time.
- TFT displays, NeoPixel sweep, and filament binary LEDs all update based on the same time data.
- No guessing, no drifting animations, and no asynchronous flicker.
This results in:
✅ Perfect synchronization
✅ High visual coherence
✅ Reliable day-long operation
Final
This project is the result of combining my love for clocks, retro aesthetics, and modern electronics into a single creative build.
The Retro-Futuristic Hybrid Clock shows how technology can be more than just functional — it can also be expressive, artistic, and emotionally engaging. By merging digital displays with physical lighting and motion effects, this clock turns time into a living visual experience rather than static numbers.
I hope this project inspires other makers to explore creative ways of blending art and engineering, and to build devices that tell stories as well as tell time.
Thank you for reading, and I look forward to seeing how others might expand, remix, or re-imagine this idea.