Skip to the content
2 layers123.8 × 74.3 mmClock board, the printed circuit board in 3D

A 6-digit 7-segment clock (HH:MM:SS) built around an ATmega328P, an external RTC, and a constant-current LED driver — split across two custom PCBs I designed in KiCad.

Size
123.8 × 74.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
43
Nets
52
Pads
170
Tracks, vias
467, 73
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
29 Jul 2026
Updated
29 Jul 2026

Overview

Clock board is an open-source printed circuit board by chrisgian05, from the chrisgian05/Digital_LED_clock repository on GitHub. It is a 2-layer board of 123.8 × 74.3 mm with 43 parts on 52 nets, routed with 467 tracks and 73 vias.

It is built around the ATMEGA328-PU, 74HC595 and DS3231MZ+. Its parts include 11 resistors, 8 capacitors, 6 transistors, 6 connectors and 5 switches. It belongs with the lEDs and displays boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

Digital LED Clock

A 6-digit 7-segment clock (HH:MM:SS) built around an ATmega328P, an external RTC, and a constant-current LED driver — split across two custom PCBs I designed in KiCad. This was mostly an excuse to actually use everything I've learned so far about digital electronics and embedded C in one project I could see and touch, instead of another breadboard that gets torn down at the end of the semester.

What it does

  • Shows time as HH:MM:SS across 6 seven-segment digits
  • Keeps time with a DS3231 RTC (accurate even when the board is powered off, thanks to a coin cell)
  • 4 buttons: set hour, set minute, reset seconds, and toggle to show the DS3231's built-in temperature reading instead of the time
  • Multiplexed display — only one digit is physically powered at a time, cycled fast enough (~166Hz) that it looks fully lit

Hardware

Two boards, connected by a short ribbon cable:

  • clock_board — the "brains." ATmega328P, DS3231 RTC, a 74HC595 shift register + 6 transistors for digit selection, an ISP header for programming, and the 4 push buttons.
  • led_board — the "face." A TLC5916 constant-current LED driver feeding three 2-digit common-anode 7-segment modules (6 digits total), plus the transistor-switched power lines coming in from the clock board.

Full schematics and PCB layouts are in hardware/, one subfolder per board. Both were designed from scratch in KiCad — no dev-board shields, no premade modules other than the RTC/driver ICs themselves.

Firmware

Bare-metal AVR C — no Arduino core, straight avr-libc and direct register access. I wanted to actually deal with I2C, timers, and interrupts myself instead of hiding behind Wire.h and digitalWrite.

  • twi.c — hardware I2C driver for talking to the DS3231
  • ds3231.c — RTC register access (BCD conversion, get/set time, temperature)
  • display.c — 7-segment font table + the Timer1 interrupt that handles digit multiplexing (bit-banging both the 74HC595 and TLC5916 shift chains)
  • buttons.c — debounced button reads with auto-repeat on hold
  • main.c — main loop tying it all together

All of it lives in firmware/, buildable with either the included Makefile or platformio.ini.

Status

Schematics and PCBs are designed; firmware is written and reviewed but not yet validated on the assembled board (still waiting on boards/soldering as of writing this). A couple of polarity assumptions (digit-select active-high/low, segment driver active-high/low) are flagged with #defines in firmware/src/config.h specifically because they're easier to confirm with a multimeter on the real board than to guess from a schematic.

Parts

43
QtyValueFootprintReferences
810KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4, R5, R6, R7, R8, R9, R10
62N3904Package_TO_SOT_THT:TO-92_InlineQ1, Q2, Q3, Q4, Q5, Q6
50.1uCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1, C2, C3, C4, C5
31OuCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC6, C7, C8
24.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
2MountingHoleMountingHole:MountingHole_3.2mm_M3_PadH1, H2
1200Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR11
174HC595Package_DIP:CERDIP-16_W7.62mm_SideBrazedU2
1ATmega328-PPackage_DIP:DIP-28_W7.62mmU1
1BATT_ConnConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1DIG_POWERConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3
1DS3231MPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU3
1HOUR_BTNButton_Switch_THT:SW_PUSH_6mm_H5mmSW2
1LEDLED_THT:LED_D5.0mmD1
1LEDB_POWERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1LM7805_TO220Package_TO_SOT_THT:TO-220-3_VerticalU4
1MIN_BTNButton_Switch_THT:SW_PUSH_6mm_H5mmSW3
1PERIPHConnector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_VerticalJ1
1POWERTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ4
1PROGRAMMERConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ5
1RST_uCButton_Switch_THT:SW_PUSH_6mm_H5mmSW1
1SEC_BTNButton_Switch_THT:SW_PUSH_6mm_H5mmSW4
1TEMP_TOGButton_Switch_THT:SW_PUSH_6mm_H5mmSW5

More from chrisgian05/Digital_LED_clock

1
  • 2 layers123.8 × 45.2 mmLed board, the printed circuit board in 3D

    Led board

    chrisgian05/Digital_LED_clock

    A 6-digit 7-segment clock (HH:MM:SS) built around an ATmega328P, an external RTC, and a constant-current LED driver — split across two custom PCBs I designed in KiCad.

    11 parts

Similar boards

  • 4 layers126.1 × 43.6 mmLaunch clock pcb v3 demo, the printed circuit board in 3D

    Launch clock pcb v3 demo

    crnkovicaaron/launchclock

    Key components: - MCU: ATmega328P - RTC: DS3231M with CR1220 battery backup - Displays: MAX7219-driven dual 4-digit 7-segment (5641AS) and 8x8 dot matrix (1088AS) - Input: 4x4 matrix keypad - Power: 5V DC via 5.5x2.1mm…

    48 parts
  • 2 layers68.6 × 53.3 mmTheeDuinovUnrouted, the printed circuit board in 3D

    TheeDuinovUnrouted

    theevanich/TheeDuino

    My own Arduino board with a RTC!

    39 parts
  • 2 layers152 × 55 mmOpenNixie, the printed circuit board in 3D

    OpenNixie

    bclswl0827/OpenNixie

    Nixie Clock for everyone!

    74 parts4MIT
  • 2 layers200 × 60.1 mmSteuerplatine, the printed circuit board in 3D

    Steuerplatine

    Der-Kai-T/Lixie-Clock

    A clock using LED Nixies by d3molite

    71 parts
  • 2 layers169.3 × 128 mmPSU PCB, the printed circuit board in 3D

    PSU PCB

    ThomasVDD/SmartSupply

    SmartSupply is a digital battery powered lab powersupply. It is Arduino compatible and can be controlled via PC over USB.

    134 parts96
  • 2 layers208.9 × 170.8 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-UART-Computer-3

    Version 3 of my educational DIY TTL computer built around a UART serial interface - now with blinkenlights!

    207 parts54
  • 2 layers170.2 × 78.7 mmROsiM, the printed circuit board in 3D

    ROsiM

    hkzlab/ROsiM

    ROsiM is a ROM simulator/emulator, supporting up to 512k/16bit ROMs

    93 parts11GPL-3.0

Questions

How big is the Clock board PCB?

It measures 123.8 × 74.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Clock board use?

43 parts, built around the ATMEGA328-PU, 74HC595 and DS3231MZ+. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Clock board KiCad files?

From the chrisgian05/Digital_LED_clock repository on GitHub, at the commit this page was made from: the board is hardware/clock_board/clock_board.kicad_pcb and its schematic hardware/clock_board/clock_board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Clock board design in my own project?

Its repository states no licence, so its author keeps all rights: ask chrisgian05 before reusing the design.