Skip to content

dakaneye/word-clock

Repository files navigation

Word Clock

CI License: MIT

An Arduino-powered word clock that displays time in English words on a laser-cut birch panel. Built with an Arduino Mega 2560 and a DS3231 RTC. The Arduino drives the LEDs directly from its digital pins — no MOSFET modules or shift registers needed.

Includes a birthday mode that alternates "HAPPY BIRTH DAY CHELSEA" with the time display on May 4th. The birthday LEDs are multicolored (rainbow).

Inspired by this reddit post and build gallery. The original project started in 2015 and was revived in 2026 with a simpler hardware design (direct pin drive instead of shift registers).

Want to build your own? See the Customization Guide — swap in any name, birthday, or word layout.

Word Grid

I T R I S C T E N H A L F
Q U A R T E R T W E N T Y
F I V E C M I N U T E S H
N H A P P Y P A S T T O D
O N E B I R T H T H R E E
E L E V E N F O U R D A Y
T W O E I G H T S E V E N
N I N E S I X T W E L V E
C H E L S E A R W F I V E
T E N O C L O C K A M P M

Hardware

  • Arduino Mega 2560 (drives LEDs directly from digital pins)
  • DS3231 RTC module (I2C)
  • ~100 white 5mm LEDs with 470 ohm resistors (common cathode wiring)
  • Rainbow LEDs for birthday words (HAPPY BIRTH DAY CHELSEA)
  • 2 push buttons (hour / minute setting)
  • 6V wall adapter (through Arduino barrel jack)
  • Laser-cut birch front panel, walnut frame

Software Architecture

word-clock/         Arduino sketch
  config.h/cpp      Pin assignments, word enum
  time_to_words     Pure logic: hour+minute -> which words light up
  display           Direct pin drive (HIGH = word on)
  clock             DS3231 RTC read/write
  buttons           Debounce + hold-repeat
  birthday          May 4th alternating display

test/               Native macOS/Linux tests for time_to_words
test-sketches/      Hardware validation sketches (RTC, pin sweep, etc.)

Building

# Install toolchain
brew install arduino-cli
arduino-cli core install arduino:avr
arduino-cli lib install "RTClib"

# Compile
arduino-cli compile --fqbn arduino:avr:mega word-clock

# Upload (with Arduino connected via USB)
arduino-cli upload -p /dev/cu.usbmodem* --fqbn arduino:avr:mega word-clock

# Run native tests
cd test && make test

Docs

About

Arduino word clock revival — shift register + DS3231 RTC driven LED word display

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages