TIM Labs

OLEDのI2Cのアドレスの確認と変更

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のアドレス・スキャナについて説明しよう。

そのものズバリの、 i2c_scanner というとても便利なツールが用意されているので、とりあえず入れておこう。

Scanning...
I2C device found at address 0x3C  !
done

ということで、デバイスのアドレスは3Cであったので、プログラム側のアドレス指定を3Cに変更して動かしたのであった。

じつは、もう1つ入手していたので、2つ並べてI2Cバスに繋いで動かしてみたら、こうなった。

DSCN4754-600.JPG

購入したままの状態で、2つのアドレスはどちらも3Cになっているため、まったくおなじ表示になった。

さて、せっかく2つあるのだから、それぞれ別々の内容を表示しなければ面白くない。

ということで、1つのアドレスを3Dに変更することにした。

デバイスの裏側は、こんな風になっていた。

DSCN4773-600.JPG

左上に、IIC ADRESS SELECT とあって、 左側に0x78、右側に0x7Aと印刷されている。

3つに分かれていて、この写真では、0x78側と中央が小さな部品で繋がれているように見える。

あまりにも小さい部品であるが、これが「チップ抵抗」のはずで、ジャンパになっているため相当抵抗値は低いはずだ。

それで、つい測定してみたら4.7kΩで、チップ抵抗の数字 472 と一致した。

これを右にずらして、ハンダ付けしなおした。

あまりにも小さいので、上手にやらないといけない。
抵抗の両端のハンダを溶かした状態のままハンダゴテで右に押して移動してから上手に離すと何とかなる。
あまりにも小さい部品なので、落としたりすると探すのが大変になりそうだ。

このブログ記事について

このページは、fujiが2019年7月13日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Arduino nano に126x64ドットのOLEDディスプレイを繋いだのだが」です。

次のブログ記事は「128x64ドットのOLEDに、8行21文字、全168文字を表示」です。

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

月別 アーカイブ