OLED(有機EL)を表示装置として接続してみました、通常ではmicro:bit上で何かを表示させようとすると表面に搭載のLED(5×5)を使うことになります。

でもこのLED(5×5)での表示は

  • ドットが粗く判読が難しい
  • 複数文字の場合スクロールするので全文字読むの時間が掛かる

ということで、取り敢えずのちょこっと表示には簡単便利ですがちゃんと表示させるには判読の難しさに不満が残ります。

ということで、この不満解消のため今回はOLED(有機EL)を使って表示させてみます。

OLEDとしては32×128ドット、64×128ドットの2種類が市場には出回っています、また価格も数百円で購入可能です。

今回は64×128ドットのもので製作してみます。

【OLEDモジュール】

OLEDはオリジナル英文のOrganic Light Emitting Diodeの頭文字を取ったものでその名の通り有機LEDです。

OLEDの発光原理・構造、LCDとの違い、通常のLEDとの違いなどの技術情報はネット上にたくさんありますのでそこいら辺から情報入手してください。(例、PanasonicStanleyなど)

ネット上でのmicro:bit製作例が多くあり、アマゾンで安く入手できるモノ(下記画像)を使います。

[Amazon購入時の補足情報]

Amzonでキーワード「OLED」と「64×128」で検索すると実に沢山のものが引っ掛かります、そして価格も非常にバラツキます、画像を見るとどれも同じような画像で違いがよくわかりません、価格は安いところで250円程度、高いところでは1,000円を超えます。実際にすべて購入したわけではないので差が良くわかりません。最終的には自身での購入実績のある販売店(中国通販)から330円で買いました。(上記リンク先)、納期は11日かかりました。

中国通販の販売会社なのですが国内のAmazon倉庫からの出荷なので翌日配達してくれるし返品対応もよいと言われている会社のHiLetgoでは760円で販売してました。商品ページはこちらです。

実際に届いたものはAmazonの商品画像と異なり、特にピンの配列(VCCとGNDが逆になっている)

最終的には動作OKでしたので価格を考慮すると全然OKですが、Amazonの中国通販ではある種覚悟が必要です。

下記画像:購入して届いたもの(左画像)、Amazon商品画像(右画像)

 

  

仕様

アマゾンには類似のものが数種類流通しているようで仕様が明示されているものもあれば無いものもありで信頼感がいまいちですが。

  • 電源:3V~5VDC
  • インタフェース:I2C / SPI (両方のインタフェースが切り替え可能ということではなく部品レベルで異なるので注文時に注意)
  • ドット数:64×128 (32×128のものもあります)
  • カラー:単色(白)、2色(黄・青) フルカラーのモノもあります。(価格高)
  • ドライバーIC:SSD1306 (事実上これしかなく、一択です)

micro:bitとの接続

インタフェースがI2Cということと電源電圧が3VでOKということなので配線は非常に簡単です。

注)前述したようにモノによってVCCとGNDが逆に配置されているものがあるので要注意です。

 

 

【プログラム】

次に、micro:bitのプログラムに入ります、プログラム自身はOLED用の拡張機能を使うことでとても簡単にできます。

拡張機能

Makecode画面の拡張期の追加画面にまずは入ります。検索キーワードは「SSD1306」です。検索結果は以下の様になると思います。(タイミングによっては他のパッケージも表示されることがあります)

この中の「OLED12864_I2C」を選択クリックします。

注)左端のパッケージ「oled-ssd1306」は現在はエラーが発生しうまく動作しません。(前のバージョンではOKでした)

 

すると、以下の様にOLED用のブロックが追加されます。

 

サンプルプログラム

月並みですが、Hello! と Worldを交互に表示するプログラムを作ってみました。

ブロックの簡単な使い方を画像の中にコメント追加してあります、

I2Cアドレス:ブロックでは数値指定が10進数だけのようなので16進数の0X3Cを10進表現に変換して”60″としてあります。尚、OLEDモジュール内回路で0x3C固定になっているケースが多いようです。モノによっては0X3Cか0X3Dかを選択できます。

フォントサイズについては設定できるブロックが無いのでデフォルトのままなので少し大きいサイズです。

 

動作を動画に撮りました。

 

内蔵センサー出力表示

 

micro:bit内蔵のセンサー(温度・明るさ・加速度・コンパス)の測定値を表示させプログラムを作成。

それぞれのセンサー4種を表示させるプログラムを関数化しました、これはただ単にプログラムが長くなるのを避けるためだけで大きな意味は無いです。引数の数値は表示行位置を指定するようにしてます。

動作状態を動画に撮りました。

 

今回はここで終了です。