HT16K33 4-Digit 16-Segment Display with Custom PCB (opens in new tab)

Things used in this project

Story

Project Overview

This project is an Arduino-based 4-digit counter built around the HT16K33 I2C LED driver and a custom 4-digit 16-segment display PCB.The main goal was to create a fully controllable, reusable display module that goes beyond standard 7-segment limitations and allows custom segment mapping and animations.

Unlike typical font-based display libraries, this project uses raw segment control, making it ideal for custom PCB layouts and advanced visual effects.

Why I Built This Project

Most ready-made 16-segment displays rely on predefined fonts, which become restrictive when:

Using a custom PCB

Working with non-standard segment wiring

Creating animations or segment-level effects

I wanted a solution where every segment is directly addressable, so the same hardware can be reused in:

Counters

Clocks

Menus

Animated indicators

This project serves as a clean and extensible base for those use cases.

How It Works

At the core of the design is the HT16K33, an I2C LED driver that handles:

Segment multiplexing

LED current control

Display refreshing

The microcontroller communicates with the HT16K33 over I2C, sending 16-bit raw segment data for each digit using writeDigitRaw().

Key Concepts:

Each segment (A–S) is mapped manually using bit definitions

Digits (0–9) are defined as bitmasks in a lookup table

A simple counter increments from 0000 to 9999

The structure is ready for state machines and animations

Hardware Design

Custom-designed PCB for a 4-digit 16-segment display

Optimized segment routing for clean animation effects

HT16K33 configured at I2C address 0x70

Schematics and PCB files are included to allow easy replication or modification.

Custom HT16K33 4-Digit 16-Segment Display PCB Design

Custom HT16K33 4-Digit 16-Segment Display PCB Design

Live PCB

Firmware

The firmware is written in Arduino C++ and focuses on:

Readability

Modularity

Easy expansion for animations

No blocking display logic is used, making it suitable for real-time embedded applications.

Video Demonstration

The full build process, PCB design, wiring, and live animation demos are shown in the video below.

Conclusion

This project demonstrates how the HT16K33 can be used far beyond simple alphanumeric displays.By controlling segments directly, it becomes possible to build custom displays with rich animations while keeping the hardware simple and reliable.

This code and hardware can be used as a foundation for more advanced display-driven projects.

**Read more

Schematics

Code

Credits

Keyboard Shortcuts

Navigation
Next / previous item
j/k
Open post
oorEnter
Preview post
v
Post Actions
Love post
a
Like post
l
Dislike post
d
Undo reaction
u
Save / unsave
s
Recommendations
Add interest / feed
Enter
Not interested
x
Go to
Home
gh
Interests
gi
Feeds
gf
Likes
gl
History
gy
Changelog
gc
Settings
gs
Browse
gb
Search
/
General
Show this help
?
Submit feedback
!
Close modal / unfocus
Esc

Press ? anytime to show this help