Back to Projects
Personal · ESP8266 / Hardware

Fiber-Optic Digital Clock

A DIY digital wall clock that displays the current time as large glowing numerals on a custom LED matrix, synced automatically over WiFi via NTP (no RTC chip needed), with animated rainbow color effects and a 3D-printed enclosure designed in Fusion 360.

Overview

The project pairs a physical build with embedded firmware. The enclosure and optics were designed in Fusion 360 and exported as multiple STL parts, a multi-piece assembly meant for 3D printing.

The Challenge & Key Outcomes

The Challenge

  • Physical-to-logical LED addressing — the 256 LEDs are wired as a single serpentine strip, but the display logic thinks in columns/rows, requiring lookup tables to map each coordinate to the correct physical pixel index.
  • No RTC hardware — time has to be obtained purely from the network, with a blocking WiFi/NTP bring-up and a second SSID as fallback if the primary network isn't reachable.
  • Custom numeral rendering — rather than a standard 7-segment font, digits 0–9 are drawn from a hand-authored 6×8 dot-matrix bitmap table rendered pixel-by-pixel each cycle.
  • Burn-in / even wear — the same physical LEDs display the same digit positions constantly, so wear needed to be spread across the panel.
  • Seconds indication in a digit-only display — a blinking indicator had to be folded into the same pixel buffer without a dedicated seconds readout.

Key Outcomes

  • A fully functional, self-time-syncing RGB clock that requires no manual time setting — it connects to WiFi and NTP on boot and free-runs from there
  • A working serpentine-to-grid LED mapping solved via two static offset tables, enabling arbitrary column/row addressing on a single-wire pixel strip
  • A resilient WiFi bring-up sequence (primary + backup SSID) so the clock recovers automatically if one network is unavailable
  • A visually distinct always-animated rainbow aesthetic layered on top of functional timekeeping
  • A complete, printable physical enclosure (multi-part Fusion 360 design) to house the electronics
Key Features
WiFi Auto-Connect with Fallback

Connects automatically on boot, with a primary/backup SSID pair so the clock recovers if one network is unavailable.

NTP Time Sync, No RTC Needed

Time comes purely from the network — configurable timezone and NTP server, blocking on a valid time callback before the clock starts rendering.

256-Pixel Serpentine LED Matrix

Two lookup tables map each (column, row) coordinate to the correct physical pixel on a single-wire 32×8 WS2812 strip wired in a serpentine run.

Custom 6×8 Dot-Matrix Digit Font

Digits 0–9 are defined as a hand-authored bitmap table and rendered pixel-by-pixel onto the mapped LED grid each cycle.

Rainbow Color-Cycling + Hourly Animation

An HSV-style Wheel() function drives a slowly shifting rainbow across all lit pixels, plus a full rainbow/theater-chase animation triggered on every hour change.

Blinking Seconds Indicator

A two-dot indicator folded into a dedicated slot of the same pixel buffer, toggled once per second.

Anti-Burn-In Column Shift

Nudges the digit rendering position by one column every time the minute changes, cycling through 4 offsets — the same idea as OLED pixel-shifting.

3D-Printed Fusion 360 Enclosure

A complete multi-part physical build (frame, digit panel(s), diffuser, mounting) designed in Fusion 360.

Tech Stack
ESP8266 Arduino C++ Adafruit_NeoPixel ESP8266WiFi NTP (time.h / coredecls.h) WS2812 / NeoPixel Fusion 360
©2026 Brannon Breau && geekingthings.com