4桁LEDドライバーのTM1637を搭載した7セグメントLEDを、M5StickCで制御して何かを表示してみます。7セグLEDって、なぜかすごくかっこいいですよね。
久しぶりのIoT実験室です。今日は、7セグメントLEDを表示してみます。
TM1637 7セグメントLED

こういったモジュールで、Amazonなどではわずか数十円から200円程度の価格で販売されています。本来7セグメントLEDの制御はいくつものアナログポートを利用しますが、TM1637は、これを2つのデジタルポートだけで制御できるようにするコントローラーで、メジャーなものです。
M5StickCと接続しよう

今回はこのように、M5StickCのGroveコネクタを使って接続します。接続の対応は以下の通りです。左がM5StickC、右がTM1637です。
- 5V – 5V
- GND – GND
- G33 – CLK
- G32 – DIO
なお、TM1637は直列に複数のモジュールを接続して制御することもできますが、これは別の機会にご説明します。
Arduino IDEにライブラリをインクルード

[スケッチ] – [ライブラリをインクルード] – [ライブラリを管理] から、「TM1637」で検索します。上記のように複数のライブラリが出てきますが、中段の「TM1637 by Avishay Orpaz」を選択してインストールします。
ソースコードを書こう
#include <M5StickC.h>
#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 33 // ①
#define DIO 32 // ①
TM1637Display display(CLK, DIO);
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(1);
M5.Lcd.setCursor(20, 15);
M5.Lcd.println("LED TEST"); // ②
}
void loop() {
display.setBrightness(0x0f);// ③
display.showNumberDec(1234, false); // ④
delay(20000);
}
① CKL・DIOポートの指定
接続した通りに、CLKを33番ポート、DIOを32番ポートに指定します。
② M5StickCのディスプレイに表示
M5StickCが起動していることを確認するため、本体のLCDディスプレイにもテストメッセージを表示しておきます。何も表示しないと起動しているかどうかがわかりません。LCDにメッセージを出すかわりに、本体のLEDを光らせるなどでも良いかもしれません。
③ ブライトネス(明るさ)を指定します
プライトネスを設定しないと何も表示されないので、このメソッドで明るさを指定するのを忘れないようにしてください。
④ 7セグLEDに数字を表示します
ライブラリのTM1637Displayクラスの、showNumberDec()メソッドを使って4桁の数字を表示してみます。TM1637Displayクラスには、他にも表示用のメソッドが色々用意されています。
表示された様子

このように7セグLEDに数値が表示されました。WEB-APIから情報をとってきて表示したり、センサーの値を表示したりなど、いろいろ応用ができそうです。
それでは今回はここまで、また実験してみます。
この記事へのコメントはありません。