# KS0064 keyestudio I2C 8x8 LED Matrix HT16K33 ![](media/image-20260108165123643.png) ## 1. Introduction A fun way to make a small display is to use an 8x8 matrix or a 4-digit 7-segment display. Matrices like these are 'multiplexed' - to control 64 LEDs you need 16 pins. That's a lot of pins, and there are driver chips like the MAX7219 that can control a matrix for you, but there's a lot of wiring to set up and they take up a ton of space. After all, wouldn't it be awesome if you could control a matrix without tons of wiring? That's where these lovely LED matrix backpacks come in. The matrices use the constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface. ![](media/image-20260108165250028.png) ## 2. Features - 8 rows and 8 cols LED matrix - Driven by HT16K33 chip - Access to I2C communication pins - Occupy less IO ports of microcontrollers - Easy connection and available for more experiment extensions ## 3. Parameters - Input voltage: 5V - Rated input frequency: 400KHZ - Input power: 2.5W - Input current: 500mA ## 4. Pinout ![](media/image-20260108165342612.png) ## 5. Wire it Up Connect the SCL pin to Analog A5, SDA pin to Analog A4 port; Connect VCC pin to 5V port, GND pin to GND. ![](media/image-20260108165418802.png) ## 6. Sample Code Download Resources : [Resources](./Resources.7z) Note: before uploading the code, you need to import the library files; otherwise, the code upload will fail. ```c #include #include "Adafruit_LEDBackpack.h" #include "Adafruit_GFX.h" #ifndef _BV #define _BV(bit) (1<<(bit)) #endif Adafruit_LEDBackpack matrix = Adafruit_LEDBackpack(); uint8_t counter = 0; void setup() { Serial.begin(9600); Serial.println("HT16K33 test"); matrix.begin(0x70); // pass in the address } void loop() { // paint one LED per row. The HT16K33 internal memory looks like // a 8x16 bit matrix (8 rows, 16 columns) for (uint8_t i=0; i<8; i++) { // draw a diagonal row of pixels matrix.displaybuffer[i] = _BV((counter+i) % 16) | _BV((counter+i+8) % 16) ; } // write the changes we just made to the display matrix.writeDisplay(); delay(100); counter++; if (counter >= 16) counter = 0; } ``` ## 7. Example Result Done wiring and powered up, upload well the code to UNO board, you will see the dot matrix display the image shown below. ![](media/image-20260108165613439.png)