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)を駆動した例。

コロン付き4桁7セグメントLED OSL40391-IW
Arduino Nano上で実行
コロン付き4桁7セグメントLED OSL40391-IW
Raspberry Pi 3 Model B+/Raspbian 9.11上で実行

2381BB (秋月電子 I-08899)を2個並べて6桁として駆動した例。

3桁7セグメントLED 2381BB ×2
Arduino Nano上で実行

ドットマトリクスLED

MOA20UB019GJ (秋月電子 I-08249)を駆動した例。

5×7ドットマトリクスLED MOA20UB019GJ
Arduino Nano上で実行
⚠映像中の明滅にご注意ください

OSL641501-AG (秋月電子 I-07661)を駆動した例。 TM1637の制限により6×8ドットのみ使用。

8×8ドットマトリクスLED OSL641501-AG
Arduino Nano上で実行
⚠映像中の明滅にご注意ください

サンプルスケッチ

ArduinoおよびESP32用のサンプルスケッチは、examplesディレクトリを参照してください。

Raspberry Pi用のサンプルは、C#バインディングを使ったサンプルをbindings/csharp/examplesディレクトリディレクトリに用意しています。 使用する場合は、まずC#バインディングを作成してください。 その後、各サンプルのディレクトリ(csprojファイルがある場所)でdotnet runを実行してください。

上記の各サンプルをそのまま実行する場合は、この後に掲載している配線図のとおりに配線してください。 使用するGPIOピンを変える場合は、ソース上のピン定義も修正してください。

インストール方法

Arduino IDE

ZIPアーカイブからインストールする場合は、以下の手順でインストールしてください。

  1. ReleasesまたはClone or downloadよりZIPアーカイブをダウンロード
  2. Arduino IDEのメニュー[スケッチ] → [ライブラリをインクルード] → [.ZIP形式のライブラリをインストール]を選択
  3. ダウンロードしたZIPアーカイブファイルを選択して[OK]

PlatformIO

platformio lib installでインストールする場合は以下のとおりです。

platformio lib install https://github.com/smdn/TM1637Controller.git

platformio.inilib_depsに直接リポジトリを指定して追加する場合は以下のとおりです。

platformio.ini
[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#バインディングをビルドできます。

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の部分)を使用するボードに合わせて配線してください。

TM1637とOSL40391-IXの配線例
TM1637は180度回転しています
1 1 5 5 10 10 15 15 20 20 25 25 30 30 A A B B C C D D E E F F G G H H I I J J ←board TM1637
TM1637とMOA20UB019GJの配線例
TM1637は180度回転、MOA20UB019GJは時計回りに90度回転しています
1 1 5 5 10 10 15 15 20 20 25 25 30 30 A A B B C C D D E E F F G G H H I I J J TM1637 ←board
TM1637と2381BBの配線例
1 1 5 5 10 10 15 15 20 20 25 25 30 30 A A B B C C D D E E F F G G H H I I J J ←board TM1637
TM1637と2381BB(2個)の配線例
2381BBを2個並べて6桁として構成する
1 1 5 5 10 10 15 15 20 20 25 25 30 30 A A B B C C D D E E F F G G H H I I J J ←board TM1637

TM1637と各種ボードとの接続

GPIOピンはデジタル入出力が使えるものなら任意に使えます。 以下はサンプルスケッチで例示している配線になります。

Arduino NanoとTM1637の配線例
TM1637→ layer 21 text:TX1 TX1 text:RX0 RX0 text:RST RST text:GND GND text:D2 D2 text:D3 D3 text:D4 D4 text:D5 D5 text:D6 D6 text:D7 D7 text:D8 D8 text:D9 D9 text:D10 D10 text:D11 D11 text:D12 D12 text:D13 D13 text:3V3 3V3 text:REF REF text:A0 A0 text:A1 A1 text:A2 A2 text:A3 A3 text:A4 A4 text:A5 A5 text:A6 A6 text:A7 A7 text:5V 5V text:RST RST text:GND GND text:VIN VIN text:1 1 text:ICSP ICSP text:TX TX text:RX RX text:PWR PWR text:RST RST text:L L text:2009 2009 text:USA USA text:ARDUINO.CC ARDUINO.CC text:ARDUINO ARDUINO text:NANO NANO text:V3.0 V3.0 text:* * text:* * text:* * text:* * text:* * text:* * element:C1 package:CAP0805-NP element:C2 package:TAN-A element:C3 package:CAP0805-NP element:C4 package:CAP0805-NP element:C7 package:CAP0805-NP element:C8 package:TAN-A element:C9 package:CAP0805-NP element:D1 package:SOD-123 element:J1 package:HEAD15-NOSS element:J2 package:HEAD15-NOSS-1 element:RP1 package:RES4NT element:RP2 package:RES4NT element:U$4 package:FIDUCIAL-1X2 element:U$37 package:FIDUCIAL-1X2 element:U$53 package:FIDUCIAL-1X2 element:U$54 package:FIDUCIAL-1X2 element:U2 package:SSOP28 element:U3 package:SOT223
ESP-WROOM-32とTM1637の配線例
TM1637→ 3V3 IO17 IO16 GND GND ESP-WROOM-32
Raspberry Pi 3 Model B+とTM1637の配線例
Raspberry Pi 3 Model B v1.2 © Raspberry Pi 2015 Power HDMI Audio USB 2x USB 2x ETHERNET DSI (DISPLAY) CSI (CAMERA) GPIO