| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
This repo provides Python drivers for the Holtek HT16K33 controller chip and various display devices based upon it, such as the Adafruit 0.8-inch 8x16 LED Matrix FeatherWing and the SparkFun Qwiic Alphanumeric Display.
The drivers support both CircuitPython and MicroPython applications. They communicate using I²C.
The library also supports generic seven-segment displays wired up to an HT16K33, which can drive up to eight these LEDs. The HT16K33 may be on a board of your own design, or on a third-party one, such as the Adafruit 16x8 LED Matrix Driver Backpack . LED units you can connect range from single digits up to combinations of multi-digit units.
Connect your HT16K33 column pins to each LED's digit selection pin, and its row pins to the LED's segment selection pins.
The HT16K33Segment14 driver for 4-digit, 14-segment LEDs has changed. The existing constructor parameter is_ht16k33 is now deprecated and will be removed in an upcoming release. If you use this driver, please update your code to use the board parameter instead. Set it to any of the following constants based on the display board you are using:
For example:
graph = HT16K33Bar(i2c, board=HT16K33Segment14.ADAFRUIT_054)Existing code will not break at this time, but I urge you to update your code as outlined above.
This release introduces support for the Adafruit Bi-Color 24-Bar Bargraph w/I2C Backpack. For usage details, please see the docs.
The HT16K33Segment driver for 4-digit, 7-segment LEDs now provides a new, uppercase character set in addition to the default lowercase set.
Further drivers may be added in due course.
The driver package comprises a parent generic HT16K33 class and child classes for various displays themselves. All your code needs to do is import the latter. For example:
from ht16k33 import HT16K33SegmentYou can then instantiate the driver object. This requires a configured I2C bus object.
You will need at least one display driver file, eg. ht16k33segmentgen.py and ht16k33.py in your project folder.
Use the pyboard or mpremote command line tools to copy the ht16k33 directory to your board's lib directory.
You can install the drivers using MicroPython's MIP system. This requires a board running MicroPython 1.20 or above and connected to the Internet. Add the following to your code:
import mip
mip.install('github:smittytone/HT16K33-Python')If your board is not Internet-capable, you can install locally using the mpremote tool:
mpremote mip install github:smittytone/HT16K33-PythonAlternatively, use our convenient installer script:
./tools/mpinstall.shTo install pre-compiled versions of the library files, run:
./tools/mpinstall.sh mpyThis requires MicroPython's mpy-cross tool installed on your computer.
Copy ht16k33 directory to the mounted board's lib folder.
Adding the driver code may prove too much for certain CircuitPython devices which have limited amounts of memory. To overcome this, use MicroPython’s mpy-cross compiler. This will compile the raw Python into a highly compact form as a .mpy file. Copy ht16k33.mpy and the device-specific .mpy file to your device in place of the .py versions.
For MicroPython boards, I recommend you use the mpinstall.sh script to compile and install .mpy versions if the library files all in one go.
You can find documentation for all of the drivers at smittytone.net.
This code is now available via the Python Package Index for folks using Thonny and other code-pulling IDEs.
This repository’s source code and documentation is copyright © 2025, Tony Smith (@smittytone).
The HTK16K33 driver and subsidiary display drivers are licensed under the MIT License.
| Back | FazBrowse Home | New Git URL |