(HT16K33を使ってLEDマトリクスを制御する)
今回はHT16K33を使ってLEDマトリクスを制御します。
前回8*8LEDマトリクスを使ったときは、ダイナミック点灯をloop処理で書いていました。
ですが、HT16K33は座標を指定することで、任意の場所を簡単に光らせることができます。
■HT16K33とLEDマトリクスの配線。
LEDマトリクスのピン配列は過去のブログを参照してください。
8×8 LEDマトリクス 使い方 | unbachiのブログ
HT16K33 ROW0 → LED 9
HT16K33 ROW1 → LED14
HT16K33 ROW2 → LED 8
HT16K33 ROW3 → LED12
HT16K33 ROW4 → LED 1
HT16K33 ROW5 → LED 7
HT16K33 ROW6 → LED 2
HT16K33 ROW7 → LED 5
HT16K33 COL0 → LED13
HT16K33 COL1 → LED 3
HT16K33 COL2 → LED 4
HT16K33 COL3 → LED10
HT16K33 COL4 → LED 6
HT16K33 COL5 → LED11
HT16K33 COL6 → LED15
HT16K33 COL7 → LED16
■HT16K33とESP32の接続
HT16K33 GND→ESP32_GND
HT16K33 VDD→ESP32_5V
HT16K33 SDA→ESP32_21PIN
HT16K33 SCL→ESP32_22PIN

■座標の確認&LEDを点灯
HT16K33は座標を指定することで、LEDマトリクスを制御します。
まずは基準となる座標(0,0)がLEDマトリクスのどの位置になるか確認します。
以下のプログラムは(0,0)を光らせて座標を確認するためのコードです。
動作確認も兼ねています。
・二つのライブラリをインストールしてください。
→Adafruit GFX Library
→Adafruit LED Backpack
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_LEDBackpack.h>
Adafruit_8x8matrix matrix = Adafruit_8x8matrix();
void setup() {
Wire.begin(21, 22);
matrix.begin(0x70);
matrix.setBrightness(10);
matrix.clear();
// 座標 (0,0) を点灯
matrix.drawPixel(0, 0, LED_ON);
matrix.writeDisplay();
}
void loop() {
}
■まとめ
今回はHT16K33を使って8*8ドットマトリクスLEDを座標指定で光らすことができました。しかし、配線が複雑でピン配置などを確認しながらの作業に時間がかかりました。次回は砂時計制作に向けて加速度センサーを使って実験したいと思います。
参考:I2C接続のLEDマトリクスコントローラ HT16K33 の使い方