WRX micro:bitを車両で使う その22 7セグメントLEDの利用(TM1637ドライバ)
久しぶりにmicro:bit関連の記事です。今回は「TM1637」チップで制御している、4桁の7セグメントLEDを利用してみます。以前にI2CインターフェイスのLCDパネルも扱いましたが、数値のみの表示であれば今回の7セグメントLEDの方が簡単です。
購入した7セグメントLED
HiLetgo® 3個セット 4ビット LEDモジュール TM1637
今回購入した7セグメントLEDはHiLetgoブラントとなっている物です。ただし見た目上で全く同じ物が、その他の様々なブランドからも販売されています。とりあえず1個だけ購入しようと思ったのですが、私の購入時では3個セットのHiLetgoブラントが600円、その他のブランドで1個のみは逆に800円~という状況でした。
1つ注意点として今回の7セグメントLEDは時計仕様となっていて、4桁の中央に「コロン」のみが配置されています。他の7セグメントLEDではコロンの他に、各桁にそれぞれ「ドット」も配置されている物もあります。
大きさは基盤部分が約横40mm*縦20mm、LED部分は約横30mm*縦14mmです。右側に4つのピンが出ていて、背面にTM1637チップが搭載されています。
※以下の内容は私の購入したHiLetgoブラントの7セグメントLEDについてです。同じTM1637チップによる制御の7セグメントLEDでも他のブランドや異なる形状の物、さらに同じHiLetgoブラントであっても、製品のバージョンによっては異なる場合があります。
I2CインターフェイスのLCDパネルについては、上記を見て下さい。
micro:bitへの接続
以前に扱ったLCDパネルのI2Cインターフェイスも4つのピンとなっていて、電源(VCC、GND)の他にI2C通信用のSDAとSCLがあり、micro:bit本体にはI2C通信用の19番と20番のピンに接続して使用しました。今回の7セグメントLEDの4つのピンでは電源の他はCLKとDIOとなっていますが、micro:bit本体は任意のピンを指定出来ます。従ってLCDパネルではセンサーブレイクアウトボードなどが必要でしたが、7セグメントLEDではmicro:bit本体の端子のみ(0~2、3V、GND)で利用可能です。ただし7セグメントLEDのピンは間隔が狭いので、ワニ口クリップでは狭くて挟めません。別途ジャンパケーブルが必要です。
私は先のセンサーブレイクアウトボードがあるので、ブレイクアウトボードのピンへ繋いでいます。7セグメントLEDの電源は3.3Vまたは5Vとなっています。
プログラム
拡張機能の追加
まずはMicrosot MakeCodeでTM1637の拡張機能を追加します。ブロックメニューの一番下にある「高度なブロック」の拡張機能から、検索欄で「TM1637」と入力して検索します。上記の拡張機能が表示されるのでこれをクリックします。
するとブロックメニューに「TM1637」が追加されます。
メニュー内の各ブロックについては次の実際のプログラムで説明します。
プログラム
上記のプログラムは1秒毎に+1となるカウンターです。「最初だけ」にTM1637のブロックメニューからCLK、DIOの設定ブロックを変数のブロックを使用して入れますが、予め「tm」という変数が指定されているので、「tm」という変数を別途追加しておきます(任意の変数に変更も可)。
次にCLKとDIOの接続先となるピンを任意に選択しますが、micro:bit本体のLEDと共有になっているピンを使用する場合は、同じく「最初だけ」にLED表示を無効とするブロックを入れます。その他「intensity」はLEDの明るさ、「LED count」は7セグメントLEDの桁数です。
「show number」ブロックは任意の数値を、「show digit (A) at (B)」ブロックは任意の数値(A)を(B)桁目に表示します。Bは今回の7セグメントLEDでは先頭の桁から0、1、2、3です。「show hex number」は入力した10進数を16進数で表示します。例えば「26」を入力するとLEDでは16進数で「1A」と表示します(上記)。
「turn on」と「turn off」ブロックは表示のON/OFFです。上記のプログラムではAボタンでoff、Bボタンでonとなりますが、カウントは表示がoffでも進みます。「clear」ブロックは表示の内容その物を消すので、改めて表示の指示が必要です。
「DotPoint at (A) show~」は(A)桁目のドットを表示しますが、今回の7セグメントLEDの場合はコロン(:)のみで、「1」とすると表示出来ました。ちなみに上記プログラムでは0.5秒毎に点灯/消灯していますが、あくまでカウンターなので0:59の次は1:00ではなく、0:99の次が1:00です。
最後の「set intensity」は最初の設定と同じで、LEDの明るさを設定(変更)します。
その他
複数の7セグメントLEDを扱う
7セグメントLEDではCLKとDIOの接続先を任意に指定出来るので、同時に複数のLEDを表示させる事が出来ます。この時は変数「tm」が重複しない様に、別の変数を追加して設定します。
micro:bitのタイマー
micro:bitには時計機能はなく、タイマー機能しかありません。そのタイマー機能もプログラム内ではあまり正確では無いので、時間を測ったり表示するには適さない印象です。LCDパネルと同じI2Cインターフェイスで、DS1307やDS3231を搭載したRTC(リアルタイムクロック)モジュールという物もありますが、詳細は不明です。拡張機能はMicrosoft MakeCodeから「RTC」で検索すると幾つか出てきます。
今回の7セグメントLEDは今後、以前車両OBD2からELM327経由で取得したエンジン回転数の表示で、LCDパネルの代わりに使用してみる予定です。
micro:bit 新バージョン「2.0」について
2020年11月25日より、Micro:bit本体の新バージョン「2.0」が発売になっています。従ってこれまでの古いmicro:bitを使用した記事(~その24)と新しいmicro:bitでは記事内容に相違がある場合があります。ただしこれまでのプログラムは基本的には新しいmicro:bitでも動作し、古いmicro:bitも引き続き使用する事が可能です(ハード的に新たに追加された機能は、拡張ボード等が必要ですが)。
なお新しいmicro:bitについては実際に1つ購入し、micro:bit関連記事「その25」から扱っています。
2022年4月追記
2021年12月にmicro:bit本体のバージョンが「2.2」になるとのアナウンスがありましたが、「2.0」との機能上の違いは無いとされています。
「micro:bit」関連記事
以下は「micro:bit」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。「その24」までの記事ではmicro:bit本体のバージョン「1.5」を使用しています。
クリックで開きます
- WRX micro:bitを車両で使う その1 micro:bitの購入
- WRX micro:bitを車両で使う その2 Microsot MakeCodeとスマホ用アプリ
- WRX micro:bitを車両で使う その3 micro:bitの仕様と購入したブレイクアウトボード
- WRX micro:bitを車両で使う その4 本体ファームウェアの更新とWebUSB
- WRX micro:bitを車両で使う その5 無線機能の利用
- WRX micro:bitを車両で使う その6 方位センサーの利用
- WRX micro:bitを車両で使う その7 加速度センサーの利用
- WRX micro:bitを車両で使う その8 micro:bitからSIドライブのモード切替
- WRX micro:bitを車両で使う その9 サーボモーターの利用(準備編)
- WRX micro:bitを車両で使う その10 サーボモーターの利用(動作編)
- WRX micro:bitを車両で使う その11 可動式雲台を作る(2軸編)
- WRX micro:bitを車両で使う その12 可動式雲台を作る(1軸編)
- WRX micro:bitを車両で使う その13 連続回転サーボモーターの利用
- WRX micro:bitを車両で使う その14 Bluetoothでスマホから操作(データ受信)を行う
- WRX micro:bitを車両で使う その15 LCDパネル(I2C LCD1602・2004)の利用
- WRX micro:bitを車両で使う その16 シリアル通信(RS232C)を行う
- WRX micro:bitを車両で使う その17 光センサーと温度センサーの利用
- WRX micro:bitを車両で使う その18 LEDのフォントとスクロールスピードを変える
- WRX micro:bitを車両で使う その19 ELM327の車両との通信を確認する
- WRX micro:bitを車両で使う その20 アスキーコード16進数から数値10進数への変換
- WRX micro:bitを車両で使う その21 車両からエンジン回転数を得る
- WRX micro:bitを車両で使う その22 7セグメントLEDの利用(TM1637ドライバ)
- WRX micro:bitを車両で使う その23 DCモーターを制御する(TB6612FNG・DRV8833)
- WRX micro:bitを車両で使う その24 ステッピングモーターを制御する(ULN2003ドライバ)
- WRX micro:bitを車両で使う その25 micro:bit バージョン2.0を購入(2021年12月 v2.2アナウンスあり)
- WRX micro:bitを車両で使う その26 バージョン2.0で追加されたMakeCodeブロック
- WRX micro:bitを車両で使う その27 バージョン2.0の初期状態と追加された機能
- WRX micro:bitを車両で使う その28 新バージョン(v2.0)のI2C通信
- WRX micro:bitを車両で使う その29 環境モニターを作る(気温・気圧・湿度編)
- WRX micro:bitを車両で使う その30 環境モニターを作る(二酸化炭素・有機化合物編)
- WRX micro:bitを車両で使う その31 環境モニターを作る(LCD表示・動作確認編)
- WRX micro:bitを車両で使う その32 環境モニターを作る(RTCモジュール追加編)
- WRX micro:bitを車両で使う その33 環境モニターを作る(ロギングモジュール追加編)
- WRX micro:bitを車両で使う その34 環境モニターを作る(ログデータ記録編)
- WRX micro:bitを車両で使う その35 車内のCO2濃度と換気について
- WRX micro:bitを車両で使う その36 新バージョン(v2.0)でのI2C通信の問題解決
- WRX micro:bitを車両で使う その37 Microsoft MakeCodeの新バージョン(v4)と新機能データロガー
- WRX micro:bitを車両で使う その38 mp3音声ファイルの再生(DFPlayer Mini)
- WRX micro:bitを車両で使う その39 車速パルス信号から速度を計算する
- WRX micro:bitを車両で使う その40 フルカラーLED(WS2812B)でメーターを作る
- WRX micro:bitを車両で使う その41 フルカラーLEDマトリックス(WS2812B)で時計を作る
- WRX micro:bitを車両で使う その42 フルカラーLEDマトリックス(WS2812B)でピクセルアートアニメーションを作る
「micro:bit+プラレール」も始めました。
その他
FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。
注記
-
- このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
- 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
- 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
- micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
- BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。