TIM Labs

2019年7月アーカイブ

I2CバスでOLED(有機EL)のドットディスプレイを Arduinoに接続したが、まったく何も表示されず、画面は真っ暗なままだった。

OLED-128x64display.JPG

こういうとき、一番考えられるのは、I2Cのアドレスが一致していないことである。

スケッチのコードを見ると...

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

となっていて、プログラムではアドレスが0x3Dが指定されている。

デバイス側のI2Cのアドレスが3Dであるかどうかを確認しなくてはならない。

確認方法は色々考えられる。

  1. 他のI2Cのアドレスを調べられるマシンで確認する。
  2. デバイスの説明書を読んで確認する。
  3. Arduinoに、I2Cバスに接続したデバイスのアドレスを調べるソフト(スキャナ)を入れて確認する。

2.が正統派と思うが、ここでは、知っておくと非常に便利なI2Cのアドレス・スキャナについて説明しよう。

前回、Arduinoの小型版のArduino nano に、128×64のモノクロのOLED(有機EL)を繋いでみたことを書いた。今回は、もっと掘り下げてみよう。

Arduino-nano-OLED-1.JPG

まず、もっとも標準的なArduino UNOから、より小さい、ブレッドボード上に挿せるArduino nanoについて説明しよう。

機能的にはArduino UNOとほぼ同じであるが、ピンに違いがあるので、結線するときには必ず印刷されているピンの記号を見ながら行おう。

今回は、I2CでOLEDディスプレイを繋ぐので、必要な結線は4本だけである。

OLED-128x64display.JPG

ディスプレイの上に、ピンが4つあるが、左から GND, VCC, SCL, SDA になっている。

16文字2行の液晶ディスプレイをArduinoにつけたが、基板も含めると、幅8cm、高さ3.6cmとかなり大きい。Arduino本体より大きく、拡張ボードと同じ幅になってしまった。遠くから眺めるのならともかく、これではあまりにも大きく、基板を専有し過ぎて邪魔である。

ということで、小型化に取り組んでみよう。

さらに、このディスプレイはピンの数が多く、ハンダ付けするのが面倒である。
ということで、少ない線数で接続できる小型のディスプレイを探すことにした。

それで、ネットで何か手頃なものはないかと調べてみた。

すると、YouTubeに、Tutorial on I2C OLED Display with Arduino/NodeMCUがあり、参考になった。
英語だけど、非常に丁寧な説明で、英語が聞き取れなくても、良く分かる説明であったので、これをベースに考えることにした。

  • 単に小さいディスプレイではなく、ドットマトリックスにしてみよう。
  • 液晶はバックライトがないと見難いし、視野角に限度がある。でも、OLED(organic light-emitting diode、有機EL)なら、ドット自身が発光しているから、見やすい。
  • Arduinoとの接続に、I2Cバスを使えば、たった4本の結線で済むので、楽そうだ。(エンジニアはlazyであるべし)温湿度気圧センサーはI2Cだったし。
  • ついでに、Arduino Uno(実際にはMarduino)を使っていたが、このビデオではArduino nano というはるかに小さいのが使われていた。

ということで、ちょっと部品を集め直して、ディスプレイのテストをしてみた。

どのくらい小さくなったか、センサーの値を表示する3階建てと比較してみた。

DSCN4729-600.JPG

ディスプレイははるかに小さくなって、約1/3の大きさである。これだけ小さいけれど、実はこちらの方が、より多くの文字を表示することができる。楽勝で、10文字4行の英数字が表示できる。頑張れば、20文字8行さえ可能である。

ディスプレイの右にあるのが、Arduino nanoである。正しくは、その互換品の安いやつである。
USBなのだが、USB Mini-B という、それほど一般的でないコネクタになっていたので、これのケーブルはわざわざ入手した。

ディスプレイにはイメージが描かれているが、これはこのデバイスのためのライブラリのサンプルを走らせただけである。

さて、次回から、もう少し詳しく説明しようと思う。

このアーカイブについて

このページには、2019年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2019年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ