HT16K33
Holtek HT16K33 16×8 LED matrix / 7-segment I²C controller (the Adafruit-style "backpack" driver).
Live catalog
Prefer labwired_describe with the catalog id over guessing pins or addresses.
Status at a glance
| Aspect | Status |
|---|---|
| Catalog id | ht16k33 |
| Bus | I²C |
| Address | 0x70 (A2..A0 low); 0x70..0x77 |
| Datasheet | Holtek HT16K33 V1.10 (May 2011): Command Summary p.30–31, Display Memory p.13, Slave Addressing p.26 |
| Source | configs/devices/ht16k33.yaml (declarative, no Rust model) |
| Tier | smoke-proven (register-level tests: crates/core/tests/parts_batch5.rs) |
Pins / attachment
| Pin / net | Role |
|---|---|
| SDA / SCL | I²C |
| ROW/COM | Not modelled (no panel) |
| INT, K pins | Not modelled |
| VDD/GND | Power (digital twin) |
Support matrix
| Behavior | Status | Notes |
|---|---|---|
| Display RAM 00h..0Fh write + read back | ✅ | Auto-increment |
| System setup, display setup (on, blink), dimming, ROW/INT | ✅ | Decoded into inspector variables |
| Key RAM 40h..45h, INT flag 60h | ⚠️ | Read 0x00 (no keys) |
| Pointer wrap past 0Fh, key scan, LED panel artifact | ❌ |
Stimulus
None.
How to run
- Place the part and an MCU in Playground, or add it to a system YAML:
- Agent:
labwired_list→labwired_describe id=ht16k33→ wire →labwired_validate→labwired_run/labwired_verify. - Register-level smoke:
cargo test -p labwired-core --test parts_batch5— oscillator/display/dimming commands, a 16-byte display-RAM write read back from 00h and 05h, and key RAM;ht16k33_decodes_its_setup_commandscovers the command decode. The same file's negative control proves the check fails against a stand-in that answers only 0x00 or only 0xFF.
Limitations
- A burst past 0Fh walks into 10h instead of wrapping.
- No LED-panel artifact is rendered.
See the YAML header for the full datasheet trace and every named approximation.