Ht16k33Multi – Easy Multi-Display Support for HT16K33 with 7-Segment Displays

Hey everyone!

I just published a small but handy Elixir library called Ht16k33Multi, designed to drive multiple 4-digit 7-segment displays powered by the HT16K33 LED driver chip via I²C.

What’s It For?

If you’re working with LED displays on Nerves, Raspberry Pi, or any I²C-capable hardware and want to display characters across multiple 7-segment devices, this library makes it super easy to:

  • :white_check_mark: Manage multiple display devices using GenServer names
  • :writing_hand: Write characters and words to one or many 7-segment displays
  • :light_bulb: Control dimming and blinking

:white_check_mark: Features

  • Display numbers on a 7-segment display
  • Display words using a built-in 7-segment font
  • Support for multiple displays (hence the “multi” in the name!)
    → Easily chain HT16K33 chips to show full sentences
  • Use built-in blinking and dimming features of the HT16K33
  • Well-documented with inline examples

:sparkles: Example

# Start the Ht16k33Multi GenServer
iex> Ht16k33Multi.start_link()

# Write to the display
iex> Ht16k33Multi.write("Hola")

# Enable blinking
iex> Ht16k33Multi.blinking_on()

:package: Installation

Add the dependency in your mix.exs:

def deps do
  [
    {:ht16k33_multi, "~> 0.1.0"}
  ]
end

Then fetch it with:

mix deps.get

:books: Learn More

8 Likes

HT16K33Multi v0.2.2 – Now with Colon Segment Support

Hi everyone,

I’m happy to announce that HT16K33Multi v0.2.2 is now available!

What’s New

:new_button: v0.2.0

Added support for controlling the colon segment, which is especially helpful for clock-style displays:

  • colon_on/1 / colon_off/1 – toggle colon on a specific display
  • colon_on_all/1 / colon_off_all/1 – toggle colon on for all displays

:hammer_and_wrench: v0.2.1

  • Fixed an issue where displays weren’t fully cleared on startup

:hammer_and_wrench: v0.2.2

  • Fixed an issue with dependency resolution

I’ve been testing this on actual HT16K33 hardware and things seem to be working well so far.
If you try it out, I’d really appreciate hearing how it goes on your end!

Feel free to report issues in the GitHub repo—PRs are always welcome!

2 Likes