Titan Micro Electronics製 TM1637 LEDドライバICを使用するドットマトリクスLED/7セグメントLED制御ライブラリです。
This software is released under the MIT License. 本ソフトウェアはMITライセンスでリリースされています。
本ライブラリはArduinoおよびESP32に対応しています。 またRaspberry Pi向けの実装(実験的)およびC#バインディング(一部機能のみ)を用意しています。
概要
TM1637を用いてドットマトリクスLEDまたは7セグメントLEDを制御するためのクラスライブラリです。 各ドット・各セグメントごとの点灯・消灯、明るさ制御の基本操作と、ビットマップの描画(ドットマトリクスLED)、左詰め・右詰め・0埋めでの数値表示(7セグメントLED)などの操作のためのメソッドを実装しています。
対応しているLEDディスプレイは、アノード最大6ライン×カソード最大8ラインまでのドットマトリクスLED、アノードコモン型・最大6桁までの小数点付き7セグメントLEDです。 8×8のドットマトリクスLEDではアノード6ライン・カソード8ライン分のみ制御可能です。 (TM1637仕様上の制限)
OSL40391 コロン付き4桁7セグメントLED(OSL40391-IXシリーズ)向けの拡張として、%付き数値の表示、温度(℃/℉)の表示、時刻(mm:ss/hh:mm)の表示のためのメソッドを実装しています。 これを用いることで、温湿度センサーから得られる数値をそのまま℃や%の単位付きでOSL40391-IXに表示するといったことができます。
Raspberry Piで直接TM1637を駆動する実装も用意していますが、現時点では実験的な位置づけで、動作が不安定です。 同C#バインディングは7セグメントLED用の機能のみ実装しています。
動作例
本ライブラリを使って各種LEDディスプレイを駆動した例です。
7セグメントLED
OSL40391-IW (秋月電子 I-09962)を駆動した例。
2381BB (秋月電子 I-08899)を2個並べて6桁として駆動した例。
ドットマトリクスLED
MOA20UB019GJ (秋月電子 I-08249)を駆動した例。
OSL641501-AG (秋月電子 I-07661)を駆動した例。 TM1637の制限により6×8ドットのみ使用。
サンプルスケッチ
ArduinoおよびESP32用のサンプルスケッチは、examplesディレクトリを参照してください。
Raspberry Pi用のサンプルは、C#バインディングを使ったサンプルをbindings/csharp/examplesディレクトリディレクトリに用意しています。 使用する場合は、まずC#バインディングを作成してください。 その後、各サンプルのディレクトリ(csproj
ファイルがある場所)でdotnet run
を実行してください。
上記の各サンプルをそのまま実行する場合は、この後に掲載している配線図のとおりに配線してください。 使用するGPIOピンを変える場合は、ソース上のピン定義も修正してください。
インストール方法
Arduino IDE
ZIPアーカイブからインストールする場合は、以下の手順でインストールしてください。
- ReleasesまたはClone or downloadよりZIPアーカイブをダウンロード
- Arduino IDEのメニュー[スケッチ] → [ライブラリをインクルード] → [.ZIP形式のライブラリをインストール]を選択
- ダウンロードしたZIPアーカイブファイルを選択して[OK]
PlatformIO
platformio lib install
でインストールする場合は以下のとおりです。
platformio lib install https://github.com/smdn/TM1637Controller.git
platformio.ini
のlib_deps
に直接リポジトリを指定して追加する場合は以下のとおりです。
[env]
lib_deps =
https://github.com/smdn/TM1637Controller.git
Raspberry Pi (C#バインディング)
共有ライブラリのビルドにSWIG(version 3.0.12以降)およびWiring PIが必要です。 また、C#バインディングのビルドに.NET Core 2.2以上のSDK、またはそれに相当するバージョンのMonoおよびMono用のMSBuildが必要です。 あらかじめインストールしておいてください。
リポジトリからソースをcloneし、bindingsディレクトリにてmake binding-csharp
することでC#バインディングをビルドできます。
git clone https://github.com/smdn/TM1637Controller.git
cd TM1637Controller/bindings
make binding-csharp
このとき同時に生成されるlibTM1637Controller.so
を使用すれば他の言語からも使用できます。
具体的な使用方法はbindings/csharp/examplesディレクトリを参照してください。
配線例
TM1637と各ボードの配線例です。
TM1637と各種LEDディスプレイとの接続
ここではLEDディスプレイとして、以下の3例を掲載します。
- コロン付き4桁7セグメントLED(OSL40391-IX)を接続する場合
- 5×7ドットマトリクスLED(MOA20UB019GJ)を接続する場合
- 3桁7セグメントLED(2381BB)を接続する場合
- 3桁7セグメントLED(2381BB)を2個接続して6桁のディスプレイを構成する場合
各種ボードとの接続は次のセクションに掲載しています。 下図中の4本のワイヤー端(←boardの部分)を使用するボードに合わせて配線してください。
図中ではDIO
及びCLK
と、GND
間のキャパシタ(100pF)、またVCC
-GND
間のキャパシタ(100μF・0.1μF)を省略しています。 実装する回路に合わせて適宜追加してください。
特にRaspberry Piでは、VCC
-GND
間のキャパシタをできる限りTM1637の近くに配置しないと安定しない場合がある模様です。
TM1637と各種ボードとの接続
GPIOピンはデジタル入出力が使えるものなら任意に使えます。 以下はサンプルスケッチで例示している配線になります。