micro:bitにディスプレイをつなぐ

micro:bitのLEDに温度などの数値を表示すると、スクロールして読み取りに苦労することがあります。そこで、比較的安価で手に入るOLEDディスプレーをつないでみることにしました。

micro:bitにOLEDディスプレーをつないで、6時間分の温度をグラフ表示

制御チップにSSD1306を使ったものなら、MakeCodeエディターで拡張機能を使ってブロックプログラミングができます。
今回はこれを使ってみました。

中国直送のものなら半額ぐらいであります(到着までに時間がかかる)。

購入したディスプレーにはピンヘッダーが別パーツで付いていたので、自分ではんだ付けしました。出ている端子は、VCC/GND/SCL/SDAで、micro:bitのエッジコネクターと次のようにつなぎます。

VCC → 3V(または17/18ピン)
GND → GND(または21/22ピン)
SCL → 19ピン
SDA → 20ピン

実験的につなぐなら、BBC micro:bit用エッジコネクタピッチ変換基板を使うのが簡単です。

該当するピンにジャンパーワイヤーを差し込む

micro:bitとディスプレーの接続ができたら、MakeCodeエディターに拡張機能を追加します。
右上の歯車マーク→「拡張機能」で、「SSD1306」を検索。

拡張機能は新しく追加されることがあるので、検索時期によって利用できるものが異なる

ちょっと前までは右上の2つしかなかったはずが、合計6種類に増えていました。それぞれ機能が微妙に違うので、試してみるといいでしょう。
まずは、今までポピュラーだった右上の「OLED12864_I2C」を入れてみます。プログラムはこんな感じ。

ボタンAを押すと、1行目に「Hello!」、2行目に温度を表示

ドット絵のような文字が表示される

ディスプレーの解像度は128×64ドットありますが、ドット絵のような文字が表示されます。全体の文字数は、13X4文字。1行目は黄色になってますが、残念ながら色の指定ができるわけではありません。このディスプレーは、1行目相当部分が黄色固定、残りは青色固定になっています。

次に、新興のXinaBoxのモジュール用に用意されている拡張機能「OD01」を入れてみます。ちなみに、XinaBoxのモジュールには、micro:bitにWi-Fi機能を付けるものがあったりして面白そうです(日本では使えませんが)。

自社製品のモジュール用なので、I2Cアドレスを指定して初期化するブロックはない

解像度そのままで文字を表示

「OD01」の方が用意されているブロックが多くて、機能も豊富。21×8文字表示できます。ただし、文字は小さくてちょっと読みにくいかもしれません。「OLED12864_I2C」のドット絵風もかわいいので、お好みで。
注意点としては、今回使ったディスプレーのI2Cアドレスが、たまたまXinaBoxの「OD01」と同じだったのですが、違う場合はこの拡張機能は使えないかもしれません。SSD1306を使ったOLEDディスプレーには、I2Cアドレスが60(0x3C)と61(0x3D)のものがあるようです。

[追記]
OLEDディスプレーの裏面を見ると、I2Cアドレスを変更できるようになっていました。抵抗が「0x78」側にあれば「0x3C」、「0x7A」側なら「0x3D」になります。でも、抵抗が面実装用のとても小さなチップなので、自分で変更するのは難しそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください