当サイトは広告が表示されます。

WRX micro:bitを車両で使う その15 LCDパネル(I2C LCD1602・2004)の利用

2020年1月26日Ad,micro:bit,社外部品・DIY

micro:bitには25個のLEDが搭載されていて、プログラムを組むことにより自由にアイコンや文字を表示出来ます。ただし連続する数値や文字を表示させるとLEDに流れる様に表示されるので、micro:bitである程度の長さとなる数値や文字を扱うプログラムを組み、その内容を確認する場合の利用には向いていません。そこで今回はLCDパネルを購入してmicro:bitで利用してみます。

スポンサーリンク

購入したLCDパネル

購入したLCDパネルは上記の様な「2004 I2C Module」ですが、様々なメーカーからRaspberryPiやArduino用として数多く販売されています。LCDは20文字×4行の表示が可能になっています。

ただし実際に購入したのはこれまでmicro:bit用のパーツを購入していて、個人的に信頼度の高いkeyestudioの「I2C LCD2004 Module」です。特にmicro:bit用とは謳われていませんが、同じくkeyestudioから販売されているmicro:bit用の「37 in 1 Starter Kit」の中に16文字×2行の「1602 I2C Module」というLCDがあります(LCDのみであればこちら)。この中でmicro:bitでの導入方法も記載されていますが、1602 I2C Module用の拡張機能で2004 I2C Moduleも互換性があるとの記載になっていたので、2004側を購入してみました。

LCDパネルには背面にI2Cインターフェイスが無い製品もあるので注意が必要です。またLCDの電源は5Vで、かつLCDパネルとの通信でmicro:bitの19番と20番の端子を使用するので、別途5V電源が利用できるIOブレイクアウトボードが必要です。ちなみに、I2Cインターフェイスにあるボリュームは液晶のコントラスト調整です。

micro:bitとLCDパネルの接続

LCDパネルのI2Cインターフェイスには4つのジャンパピンがあり、それぞれ通信を行うSCL・SDAと、電源のVCC・GNDになっています。micro:bit側の端子は19番がSCL、20番がSDAなのでIOブレイクアウトボードの19番と20番にジャンパケーブルでそれぞれを接続します。電源はVCCに5V、GNDはGNDになります。

注記(2020年12月追記)

2020年11月にmicro:bit本体の新バージョン(v2.0)が発売されました。実際に1つ購入したのですが、新バージョンではI2C通信(端子19、20)が上手く機能しません。全てのmicro:bit(v2.0)で同様なのかは分かりませんが、現在はファームウェアの更新等、何らかの動きがある事を期待しています。

拡張機能の導入

Microsot MakeCodeで高度なブロック内の最下部にある「拡張機能」を選択し、検索欄で先のkeyestudioの「1602 I2C Module」ページで示されているアドレス(https://github.com/xuefengedu/pxt-lcd1602_CN)を入力して検索します。

「lcd-1602」が表示されるので、これを選択します。

Microsot MakeCodeに「LCD1602液晶」が追加されます。

プログラム

※1

LCDパネルを利用するには「最初だけ」に「I2C address」と「set string」、「set LCD backlight」を挿入します。「set string」は「visibled」にしないとLCD上に表示されません。「set LCD backlight」はOFFにするとバックライトが消えます。バックライトはOFFでもLCD上に表示は出来ますが、ほとんど見えない状態です(LCDパネルの色にもよります)。

「I2C address」についてはデフォルトで「0x27(アスキーコード・10進数では39」になっていますが、これはI2Cインターフェイスに搭載されているICの型式によります。購入したLCDパネルでは「PCF8574T」だったのでデフォルトのままです(keyestudioのページにもアドレスは記載されています)。「PCF8574T」以外では末尾「T」が無い物や「AT」の物もある様ですが、「Auto set」のブロックでも表示は出来ました。

実際にLCD上に表示を行う際は「LCD show string」ブロックで文字、「LCD show number」ブロックで数値を表示します。それぞれx(列)とy(行)で表示位置を指定しますが、xは「0~3」、yは「0~19」が範囲です。またこのブロックでは元が「1602」用の為か、スライドでの選択ではxは「0か1」、yは「0~15」までしか指定出来ません(※1の画面)。「2004」の場合は直接キーボードで入力します。

「Shift Left」と「Shift Right」は1回実行すると、LCD表示の全体がx方向の左右にそれぞれ1列分だけ移動します。「LCD clear」は表示されている文字、数値を消去します。

補足

「2004」の場合、現状ではLCD上の全てに表示を行っても、1行目が16列までしか表示されませんでした。この拡張機能はあくまで「1602」用なので、これ以外にもまだ何らかの問題があるかもしれません。

その他

今回の利用方法は購入したメーカーの方法に従っていますが(パネルは本来1602ですが)、結局の所は他メーカーでもI2Cインターフェイスが違うだけで、拡張機能も他メーカーの物が利用できる場合もあります(もちろん自己責任で)。

※上記プログラムでLCDパネルのI2Cアドレスが「27」になっていますが、正しくは「39」です。16進数にすると「0x27」になります。ただし先の通り、アドレスはI2CインターフェイスのIC型式によります。

上記は「MakerBit」用としての拡張機能(1602用)ですが、2004にも対応している様子で(その後、対応しなくなった模様)実際にも購入したkeyestudioのLCDパネルでも表示出来ました。ブロックの利用方法は異なりますが、1行目の表示も問題ありませんでした。

※上記MakerBitの拡張機能(1602用)では2004は対応出来なくなりましたが、別途正式に2004用の拡張機能が公開されていました。Microsot MakeCodeの拡張機能の検索欄に、githubのアドレスをコピペして利用します。

今回LCDパネルを購入したのは、この先で色々データを確認したい事がある為ですが、データ量が長くなりそうなので「2004」にしました。またシリアル通信(RS232C)も必要になって来るので、次回はシリアル通信を扱う予定です。

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」を使用しています。

micro:bit関連記事
クリックで開きます

「micro:bit+プラレール」も始めました。

プラレール関連記事

その他

FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。

注記

    • このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。