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.ini
のlib_deps
に直接リポジトリを指定して追加する場合は以下のとおりです。
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#バインディングをビルドできます。
このとき同時に生成される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ピンはデジタル入出力が使えるものなら任意に使えます。 以下はサンプルスケッチで例示している配線になります。
APIリファレンス
version 1.1.0時点でのAPIリファレンスです。
7セグメントLED用クラス
以下で解説する7セグメントLED用のクラスは、TM1637と7セグメントLEDが次のように接続されていることを前提としています。 §.TM1637と各種LEDディスプレイとの接続と合わせてご覧ください。
TM1637の端子 | 7セグメントLEDの端子 |
---|---|
SEG1 (2) |
A セグメント 'A' |
SEG2 (3) |
B セグメント 'B' |
SEG3 (4) |
C セグメント 'C' |
SEG4 (5) |
D セグメント 'D' |
SEG5 (6) |
E セグメント 'E' |
SEG6 (7) |
F セグメント 'F' |
SEG7 (8) |
G セグメント 'G' |
SEG8 (9) |
DP セグメント 'DP' |
GRID1 (15) |
COM DIG1 (左から)1桁目のアノード共通端子 |
GRID2 (14) |
COM DIG2 (左から)2桁目のアノード共通端子 |
GRID3 (13) |
COM DIG3 (左から)3桁目のアノード共通端子 |
GRID4 (12) |
COM DIG4 (左から)4桁目のアノード共通端子 |
GRID5 (11) |
COM DIG5 (左から)5桁目のアノード共通端子COM D1~D3 ドットD1〜D3の共通端子 (OSL40391-IXの場合) |
GRID6 (10) |
COM DIG6 (左から)6桁目のアノード共通端子 |
TM1637の端子 | 7セグメントLEDの端子 |
本ライブラリでは、数を表す文字は次のような字形で表示されます。
文字 | 字形 | |
---|---|---|
10進数 | 0 |
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
0 |
|
文字 | 字形 | |
---|---|---|
16進数 | A |
|
B |
|
|
C |
|
|
D |
|
|
E |
|
|
F |
|
次のような場合に関しては、§.SegmentAddressingを参照してください。
- セグメントレイアウトが上記のレイアウトとは異なる7セグメントLEDを接続する場合
- 部品配置・結線上の都合でTM1637と7セグメントLEDの各端子の接続を上記とは異なる接続に変えて使用したい場合
- 表示される字形をカスタマイズしたい場合
クラス
制御する7セグメントLEDに合わせて以下のクラスを選んで使用することができます。
クラス | 概要 | ヘッダファイル |
---|---|---|
TM1637_1Digit7SegmentLEDController
|
1桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | TM1637_7SegmentLEDController.h |
TM1637_2Digit7SegmentLEDController
|
2桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | |
TM1637_3Digit7SegmentLEDController
|
3桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | |
TM1637_4Digit7SegmentLEDController
|
4桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | |
TM1637_5Digit7SegmentLEDController
|
5桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | |
TM1637_6Digit7SegmentLEDController
|
6桁のアノードコモン型 小数点付き 7セグメントLED用のコントローラ | |
TM1637_OSL40391IXController
|
アノードコモン型 コロン付き 4桁7セグメントLEDOSL40391-IXシリーズ用のコントローラ | TM1637_OSL40391IXController.h |
上記の具象クラス以外に、用途に合わせて下記の基本クラスを直接または拡張して使用することもできます。
クラス | 概要 | ヘッダファイル |
---|---|---|
TM1637_7SegmentLEDController
|
標準的なセグメントレイアウトで構成される1〜6桁のアノードコモン型 小数点付き 7セグメントLED用コントローラ基底クラス | TM1637_7SegmentLEDController.h |
TM1637_7SegmentLEDCustomSegmentAddressingController
|
1〜6桁のアノードコモン型 小数点付き 7セグメントLED用コントローラ基底クラス | TM1637_7SegmentLEDController.h |
StandardSegmentAddressing
|
標準的なセグメントレイアウトの定義クラス | TM1637_7SegmentLEDController_SegmentAddressing.h |
コンストラクタ・テンプレート引数
各クラスのインスタンスを作成する場合は、コンストラクタで下記の引数を指定してください。
引数名 | 概要 |
---|---|
pin_DIO (uint8_t) |
TM1637の端子DIO (17)と接続しているピン番号を指定してください |
pin_CLK (uint8_t) |
TM1637の端子CLK (18)と接続しているピン番号を指定してください |
gridsOrder (unsigned int[]) |
(オプション) TM1637の端子GRID1 〜GRID6 と、7セグメントLEDのアノード共通端子1〜6が異なる順で接続されている場合、この引数を指定することで対応順を変えることができます。具体例はexamples/7SegmentLED_ChangeOrderDigits/7SegmentLED_ChangeOrderDigits.inoを参照してください。 |
引数名 | 概要 |
基本クラスを直接または拡張して使用する際は、下記のテンプレート引数も指定する必要があります。
引数名 | 概要 | 備考 |
---|---|---|
NUM_OF_DIGITS (size_t) |
TM1637と接続している7セグメントLEDの桁数を指定してください |
TM1637_7SegmentLEDController およびTM1637_7SegmentLEDCustomSegmentAddressingController |
NUM_OF_GRIDS_FOR_USE (size_t) |
コントローラ内部で確保するグリッド数を指定してください (7セグメントと小数点以外に実装されているLEDを操作する場合に指定します。 詳細は TM1637_OSL40391IXController の実装をご覧ください。) |
TM1637_7SegmentLEDCustomSegmentAddressingController
|
TSegmentAddressing (typename) |
TM1637のSEG1 〜SEG8 端子と各セグメントの接続対応にあわせて各種キャラクタを定義したクラスを指定してください。(詳細は StandardSegmentAddressing の実装をご覧ください。) |
TM1637_7SegmentLEDCustomSegmentAddressingController
(詳細:§.SegmentAddressing) |
引数名 | 概要 | 備考 |
メソッド
7セグメントLED用クラスでは以下のメソッドを使うことができます。 明るさの制御等に関するメソッドについては§.7セグメントLED・ドットマトリクスLED共通をご覧ください。
メソッド名 | 引数(必須) | 概要 | 備考 | |
---|---|---|---|---|
複数桁の表示に関する操作 | ||||
display |
int_fast32_t value
|
整数値value を10進表記・右詰めで表示します |
・数値の桁数がNUM_OF_DIGITS より大きくなる場合、上位の桁からNUM_OF_DIGITS 桁分のみを表示します・数値がNaNまたは±∞の場合、それぞれ nan INF -INF |
|
displayZeroPadding |
int_fast32_t value
|
整数値value を10進表記・0埋めで表示します |
||
displayHex |
int_fast32_t value
|
整数値value を16進表記・右詰めで表示します |
||
displayHexZeroPadding |
int_fast32_t value
|
整数値value を16進表記・0埋めで表示します |
||
display |
char* format , integer_t value |
整数値value を書式format で表示しますformat にはsprintf 形式の書式指定子を指定してください |
||
display |
float value
|
実数値value を小数形式で表示しますwidth に整数部の桁数、precision に少数部の桁数を指定します(dtostrf の動作に依拠します) |
||
float value , int width , unsigned int precision |
||||
displayNumericalString |
String& str
|
文字列str で表された数値を表示しますstr には0 〜9 , A 〜F , a 〜f , - , . , (SP, 0x20)の各文字を任意の順で含めることができますそれ以外の文字が含まれている場合は空白 として表示します |
||
char* str , size_t length |
||||
displaySegmentBits |
uint8_t (&segmentBits)[NUM_OF_GRIDS_FOR_USE]
|
すべての桁のセグメントを、桁ごとのビット列配列segmentBits で表される状態に設定します |
||
clear | すべての桁に空白 を設定して消灯状態にします |
|||
clearCharacterSegments | すべての桁に対して、文字のセグメントのみ(ドットのセグメント以外)を消灯状態にします |
0.0.0.
... |
||
clearDecimalPointSegments | すべての桁に対して、ドットのセグメントのみ(文字のセグメント以外)を消灯状態にします |
0.0.0.
000 |
||
各桁ごとの表示に関する操作 | ||||
setDecimalNumberAt |
unsigned int digit , uint8_t decimalNumber |
digit 桁目に10進数値decimalNumber (0〜9)のキャラクタを設定します |
||
setHexNumberAt |
unsigned int digit , uint8_t hexadecimalNumber |
digit 桁目に16進数値hexadecimalNumber (0x0〜0xF)のキャラクタを設定します |
||
setDecimalPointOnAt |
unsigned int digit
|
digit 桁目の小数点セグメント |
||
setDecimalPointOffAt |
unsigned int digit
|
digit 桁目の小数点セグメント |
||
setDecimalPointAt |
unsigned int digit
|
digit 桁目の小数点セグメントtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
setSegmentBitsAt |
unsigned int digit , uint8_t segmentBits |
digit 桁目のセグメントをビット列segmentBits で表される状態に設定します |
||
switchSegmentBitsAt |
unsigned int digit , uint8_t segmentBits , bool trueForOnOtherwiseOff |
digit 桁目のセグメントをビット列segmentBits で表される状態に設定します各ビットに対応するセグメントについて、 trueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
その他の操作 | ||||
flush | 内部バッファに書き込まれている状態を反映させます | 上記の各メソッドのオプション引数flush にfalse を指定した場合、内部バッファのみを変更し、TM1637へのコマンド送信を保留します保留したコマンド送信を行って内部バッファの状態をTM1637へ反映させる際にこのメソッドを呼び出してください |
||
static メソッド | ||||
numberOfDigits | 桁数を返します (テンプレート引数 NUM_OF_DIGITS で指定した値と同値) |
|||
displayableMaximumInteger | 表示可能な整数の最大値を返します | 4桁の場合: 9999 |
||
displayableMinimumInteger | 表示可能な整数の最小値を返します | 4桁の場合: -999 |
||
displayableMaximumPlusFloat | 表示可能な正の実数値の最大値を返します | 4桁の場合: 9999.0 |
||
displayableMinimumPlusFloat | 表示可能な正の実数値の最小値を返します | 4桁の場合: 0.001 |
||
displayableMaximumMinusFloat | 表示可能な負の実数値の最大値を返します | 4桁の場合: -999.0 |
||
displayableMinimumMinusFloat | 表示可能な負の実数値の最大値を返します | 4桁の場合: -0.01 |
||
メソッド名 | 引数(必須) | 概要 | 備考 |
OSL40391-IX向けのメソッド
クラスTM1637_OSL40391IXControllerでは、上記のメソッドに加え、OSL40391-IXシリーズ向けに下記のメソッドを実装しています。
メソッド名 | 引数(必須) | 概要 | 備考 | |
---|---|---|---|---|
複数桁の表示に関する操作 | ||||
displayTemperatureCelsius |
float temperatureCelsius
|
1〜3桁目にtemperatureCelsius の値を、4桁目に摂氏度記号℃の字形 |
・実数値の表示はdisplay(float)に依拠します ・ 100.1 のように3桁目に小数点がある場合でも、常に消灯状態にし100. 100 ・数値が 999 超過、-99 未満、NaN、±∞のいずれかの場合は、--- |
|
displayTemperatureFahrenheit |
float temperatureFahrenheit
|
1〜3桁目にtemperatureFahrenheit の値を、4桁目に華氏度記号℉の字形 |
||
displayTemperature |
float temperature , bool trueForCelsiusOtherwiseFahrenheit |
1〜3桁目にtemperature の値を表示しますtrueForOnOtherwiseOff がtrue なら摂氏度記号℃の字形false なら華氏度記号℉の字形 |
||
displayPercent |
float value
|
1〜3桁目にvalue の値を、4桁目にパーセント記号%の字形value は100 を100%として表示します |
||
displayElapsedTimeMinutesSeconds |
uint32_t elapsedMilliseconds
|
elapsedMilliseconds で表される総経過ミリ秒をmm:ss 形式で表示します経過時間の分部分を1〜2桁目、経過時間の秒部分を3〜4桁目に表示し、コロンのセグメント 分部分は 00 〜99 の範囲で表示し、100以上となる場合は下位二桁(100での剰余、mod 100)を表示します秒部分は 00 〜59 の範囲で表示します |
オプション引数blinkColon がtrueの場合、経過ミリ秒に応じて1秒周期でコロンを点滅させて表示しますfalseの場合、コロンを常時点灯させて表示します |
|
displayElapsedTimeHoursMinutes |
uint32_t elapsedMilliseconds
|
elapsedMilliseconds で表される総経過ミリ秒をhh:mm 形式で表示します経過時間の時部分を1〜2桁目、経過時間の分部分を3〜4桁目に表示し、コロンのセグメント 時部分は 00 〜99 の範囲で表示し、100以上となる場合は下位二桁(100での剰余、mod 100)を表示します分部分は 00 〜59 の範囲で表示します |
||
displayTimeOfDayMinutesSeconds |
uint32_t timeInMilliseconds
|
timeInMilliseconds で表される時刻(日付変更直後00:00:00からの経過ミリ秒)をmm:ss 形式で表示します分部分は 00 〜59 の範囲で表示します秒部分は 00 〜59 の範囲で表示します上記以外はdisplayElapsedTimeMinutesSecondsと同様です |
||
displayTimeOfDayHoursMinutes |
uint32_t timeInMilliseconds
|
timeInMilliseconds で表される時刻(日付変更直後00:00:00からの経過ミリ秒)をhh:mm 形式(24時制)で表示します時部分は 00 〜23 の範囲で表示します分部分は 00 〜59 の範囲で表示します上記以外はdisplayElapsedTimeHoursMinutesと同様です |
||
各桁ごと/セグメントごとの表示に関する操作 | ||||
setColonOn | コロンのセグメント |
|||
setColonOff | コロンのセグメント |
|||
setColon |
bool trueForOnOtherwiseOff
|
コロンのセグメントtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
setUpperDotOfColonOn | コロン上側ドットのセグメント |
|||
setUpperDotOfColonOff | コロン上側ドットのセグメント |
|||
setUpperDotOfColon |
bool trueForOnOtherwiseOff
|
コロン上側ドットのセグメントtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
setLowerDotOfColonOn | コロン下側ドットのセグメント |
|||
setLowerDotOfColonOff | コロン下側ドットのセグメント |
|||
setLowerDotOfColon |
bool trueForOnOtherwiseOff
|
コロン下側ドットのセグメントtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
setDegreeSignOn | 度数記号のセグメント |
|||
setDegreeSignOff | 度数記号のセグメント |
|||
setDegreeSign |
bool trueForOnOtherwiseOff
|
度数記号のセグメントtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
setPercent |
4桁目にパーセント記号(%)の字形 度数記号のセグメントを使用するため、4桁目以外に表示させることはできません |
|||
メソッド名 | 引数(必須) | 概要 | 備考 |
SegmentAddressing
このセクションの内容は未整備です。
テンプレート引数TSegmentAddressing
に各種字形とビットパターンを定義したクラスを指定することにより、その定義に従って動作させることができます。 これにより、一般的なセグメントのレイアウトではない7セグメントLEDを使用したり、TM1637と7セグメントLEDとの結線や表示される字形をカスタマイズすることができます。
TSegmentAddressing
に指定できるクラスの実装例については、TM1637_7SegmentLEDController_SegmentAddressing.hを参照してください。
ドットマトリクスLED用クラス
クラス
制御するドットマトリクスLEDのアノード・カソードの結線によって次のどちらかのクラスを使ってください。 どちらのクラスも、アノードが最大6ライン、カソードが最大8ラインまで対応できます。
ドットマトリクスLED | クラス | ヘッダ |
---|---|---|
列方向のラインがカソード 行方向のラインがアノード |
TM1637_CathodeColumnsAnodeRowsDotMatrixLEDController
|
TM1637_DotMatrixLEDController.h |
列方向のラインがアノード 行方向のラインがカソード |
TM1637_AnodeColumnsCathodeRowsDotMatrixLEDController
|
8×8タイプのドットマトリクスLEDを接続すること自体はできますが、操作は最大でアノード6ライン分までとなるため、2ライン分は無効になります。 (TM1637仕様上の制限)
上記の具象クラス以外に、用途に合わせて下記の基本クラスを直接または拡張して使用することもできます。
クラス | 概要 | ヘッダファイル |
---|---|---|
TM1637_DotMatrixLEDController
|
ドットマトリクスLED用コントローラ基底クラス | TM1637_DotMatrixLEDController.h |
コンストラクタ・テンプレート引数
各クラスのインスタンスを作成する場合は、コンストラクタで下記の引数を指定してください。
引数名 | 概要 |
---|---|
pin_DIO (uint8_t) |
TM1637の端子DIO (17)と接続しているピン番号を指定してください |
pin_CLK (uint8_t) |
TM1637の端子CLK (18)と接続しているピン番号を指定してください |
引数名 | 概要 |
クラス TM1637_CathodeColumnsAnodeRowsDotMatrixLEDController
または TM1637_AnodeColumnsCathodeRowsDotMatrixLEDController
を使用する場合は以下のテンプレート引数を指定してください。
引数名 | 概要 |
---|---|
NUM_OF_ROWS (size_t) |
TM1637と接続しているドットマトリクスLEDの列の数を指定してください |
NUM_OF_COLS (size_t) |
TM1637と接続しているドットマトリクスLEDの行の数を指定してください |
引数名 | 概要 |
TM1637_DotMatrixLEDController
を使用する場合は上記の替わりに以下のテンプレート引数を指定してください。
引数名 | 概要 |
---|---|
NUM_OF_ANODE_LINES (size_t) |
TM1637と接続しているドットマトリクスLEDのアノードのライン数を指定してください |
NUM_OF_CATHODE_LINES (size_t) |
TM1637と接続しているドットマトリクスLEDのカソードのライン数を指定してください |
引数名 | 概要 |
メソッド
ドットマトリクスLED用クラスでは以下のメソッドを使うことができます。 明るさの制御等に関するメソッドについては§.7セグメントLED・ドットマトリクスLED共通をご覧ください。
メソッド名 | 引数(必須) | 概要 | 備考 | |
---|---|---|---|---|
各ドットに対する操作 | ||||
fill | すべてのドットを点灯状態にします | |||
clear | すべてのドットを消灯状態にします | |||
invert | すべてのドットの点灯/消灯状態を反転します | |||
fillRow |
unsigned int row
|
row 列目のすべてのドットを点灯状態にします |
row , column は0-basedです |
|
clearRow |
unsigned int row
|
row 列目のすべてのドットを消灯状態にします |
||
fillColumn |
unsigned int column
|
column 行目のすべてのドットを点灯状態にします |
||
clearColumn |
unsigned int column
|
column 行目のすべてのドットを消灯状態にします |
||
setOn |
unsigned int column , unsigned int row |
column 行row 列のドットを点灯状態にします |
||
setOff |
unsigned int column , unsigned int row |
column 行row 列のドットを消灯状態にします |
||
set |
unsigned int column , unsigned int row , bool trueForOnOtherwiseOff |
column 行row 列のドットを点灯/消灯状態を設定しますtrueForOnOtherwiseOff がtrue なら点灯状態、false なら消灯状態にします |
||
draw |
uint8_t (&bitmapTopLeftOrigin) [NUM_OF_ROWS]
|
左上が原点のビットマップに対応するドットの点灯/消灯状態を設定します | ||
drawRotated |
uint8_t (&bitmapBottomLeftOrigin) [NUM_OF_COLS]
|
270度回転して左下が原点のビットマップに対応するドットの点灯/消灯状態を設定します | ||
その他の操作 | ||||
flush | 内部バッファに書き込まれている状態を反映させます | 上記の各メソッドのオプション引数flush にfalse を指定した場合、内部バッファのみを変更し、TM1637へのコマンド送信を保留します保留したコマンド送信を行って内部バッファの状態をTM1637へ反映させる際にこのメソッドを呼び出してください |
||
static メソッド | ||||
numberOfRows | 列数を返します (テンプレート引数 NUM_OF_ROWS で指定した値と同値) |
TM1637_CathodeColumnsAnodeRowsDotMatrixLEDController およびTM1637_AnodeColumnsCathodeRowsDotMatrixLEDController のみ |
||
numberOfColumns | 行数を返します (テンプレート引数 NUM_OF_ROWS で指定した値と同値) |
|||
numberOfAnodeLines | アノードのライン数を返します (テンプレート引数 NUM_OF_ANODE_LINES 、ないしはNUM_OF_ROWS , NUM_OF_COLS で指定した値と同値) |
|||
numberOfCathodeLines | カソードのライン数を返します (テンプレート引数 NUM_OF_ANODE_LINES 、ないしはNUM_OF_ROWS , NUM_OF_COLS で指定した値と同値) |
|||
メソッド名 | 引数(必須) | 概要 | 備考 |
7セグメントLED・ドットマトリクスLED共通
以下は7セグメントLED用・ドットマトリクスLED用クラスに共通するメソッドです。 基底クラスTM1637Controller
(TM1637Controller.h)で実装しています。
メソッド名 | 引数(必須) | 概要 | 備考 | |
---|---|---|---|---|
begin | インスタンスを初期状態にし、TM1637に初期化コマンドを送信します オプション引数 displayBrightnessPercent で明るさの初期値を指定することができます |
明るさ設定の詳細については下記メソッドを参照してください | ||
setDisplaySwitchOn | ディスプレイをオンにします 点灯状態のセグメントが点灯します |
|||
setDisplaySwitchOff | ディスプレイをオフにします 点灯状態のセグメントも消灯します |
|||
setDisplaySwitch |
bool trueForOnOtherwiseOff
|
trueForOnOtherwiseOff がtrue ならディスプレイをオンに、false ならオフにします |
||
getDisplaySwitch | 現在のディスプレイのオン/オフの状態を取得します オンなら true を、オフならfalse を返します |
|||
setDisplayBrightness |
unsigned int brightnessPercent
|
ディスプレイの明るさを0%〜100%の範囲で指定します 0%に設定した場合、同時にディスプレイオフの状態にします 1%以上に設定した場合、同時にディスプレイオンの状態にします |
||
setDisplayBrightnessMaximum | ディスプレイの明るさを最大にします | TM1637で定義されているパルス幅14/16に設定します | ||
setDisplayBrightnessBrighter | ディスプレイの明るさを明るめにします (今より1段階明るくするものではありません) |
TM1637で定義されているパルス幅10/16に設定します | ||
setDisplayBrightnessDarker | ディスプレイの明るさを暗めにします (今より1段階暗くするものではありません) |
TM1637で定義されているパルス幅4/16に設定します | ||
setDisplayBrightnessMinimum | ディスプレイの明るさを最小にします | TM1637で定義されているパルス幅1/16に設定します | ||
getDisplayBrightness | 現在のディスプレイの明るさを0%〜100%の範囲の値で返します | 内部でTM1637で定義されているパルス幅に応じてた値に変換するため、setDisplayBrightnessで指定した値と同じ値を返すとは限りません | ||
メソッド名 | 引数(必須) | 概要 | 備考 |
動作状況
version 1.1.0の時点において、以下の環境・ボードでの動作を確認しています。
動作確認済みのボード
- Arduino Nano ATmega328 (New Bootloader)
- Arduino Nano Every
- Wi-Fiモジュール ESP-WROOM-32 DIP化キット (秋月電子通商 AE-ESP-WROOM-32 (K-11755)) + 低損失三端子レギュレーター 3.3V1A TA48033S (秋月電子通商 TA48033S (I-00534))
- Raspberry Pi 3 Model B+ Raspbian 9.11
IDE
- Ubuntu 20.04 + PlatformIO IDE 2.2.1
- Ubuntu 18.04 + Arduino IDE 1.8.10
制限事項・特記事項
Raspberry Pi向けの実装に関して
version 1.0.0の時点では実験的な位置づけです。 すべての機能は一応の動作はしますが、不安定です。
現時点での実装では、TM1637に送信するコマンドのタイミングが遅れることがあります。 これにより、目的より後ろの桁やセグメントに表示される、目的と異なるコマンドと誤認される問題が発生します。
短時間でコマンド送信を連続すると、この現象が顕著に現れます。 コマンド送信を50ms〜100msに一度程度にすると(少なくとも見かけ上は)緩和しますが、間隔をあまり大きくするとズレた状態のまま表示されることになります。
その他
本ページ内の実体配線図の作図にはFritzingを使用しています。
デモ映像でのOLEDディスプレイの表示にはSO2002A_I2C (https://github.com/garretlab/SO2002A_I2C)を使用しています。
不具合・要望・質問等
不具合の報告、ライブラリに対する修正案等がありましたらIssues、要望や質問等はDiscussionsへお願いします。 言語は英語のほうが望ましいですが、日本語のほうが助かります。
バージョン履歴
バージョンごとの変更点はリンク先をご覧ください。
- version 1.1.0 / 2020-12-10
- version 1.0.0 / 2019-12-13