こんばんは、よつばです。
===
本件、解決しました。(2018/03/15)
解決記事は、こちら -> ESP-WROOM-02 (ESP8266)で有機EL SSD1306を表示する)
コメントで情報くださった方、ありがとうございました。
===
今日はうまくいかなかった話をしたいと思います。
ESP-WROOM-02(ESP8266)で、128×64ドットのOLED(有機ELディスプレイ) SSD1306に文字を表示させようとしたのですが、画面がうまく表示できず詰まっています。
以下の写真のように、画面にはドットが表示されるのですが、表示したい文字にはなりませんでした。

ここから、やったことを記していきます。
準備
Arduino IDEでスケッチ -> ライブラリをインクルード -> ライブラリを管理から「Adafruit SSD1306」で検索し、バージョン1.1.2をインストールしました。

- SDAピンとしてGPIOの4に接続
- SCLピンとしてGPIOの5に接続
- VccにESP-WROOM-02の3.3Vを接続
- GNDにESP-WROOM-02のGNDを接続
GPIOの設定として、SDAとSCLを何番に設定しているかをソース中で書いてないように見えて、どこかで設定するのではないかと思うのですが、デフォルトは4と5を使用しているとの記載も見たため、そのままにしています。
ただ、OLED_RESETが4になっていたので、これを2に変更しました。
OLEDの裏面は、0x78にハンダづけされていました。したがって、display.beginは0x78>>1 (= 0x3C)としました。

ソースコード
ここを参考にしました。
Arduino > OLED > adafruitライブラリ
https://qiita.com/sugasaki/items/7df0fec82b232c41c2d2
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 2
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
Serial.println("Setup Start");
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x78>>1);
Serial.println("Clear Display");
display.clearDisplay(); // Clear the buffer.
Serial.println("Setup End");
}
void loop() {
Serial.println("Loop");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Hello");
display.display();
delay(2000);
}
ヘッダーファイルの編集
Arduinoフォルダ -> libraries -> Adafruit_SSD1306 -> Adafruit_SSD1306.h を以下のように編集しました。
変更前
// #define SSD1306_128_64 #define SSD1306_128_32
変更後
#define SSD1306_128_64 // #define SSD1306_128_32
まとめ
現在、ESP-WROOM-02に有機EL SSD1306を接続したが、画面に文字を表示できない状態でした。
参考文献
-
Arduino > OLED > adafruitライブラリ
https://qiita.com/sugasaki/items/7df0fec82b232c41c2d2 -
ArduinoでOLEDディスプレイに色々表示する
https://qiita.com/jakalada/items/793a6cf5ff2796db4e86 -
ssd1306_128x64_i2c.ino
https://github.com/adafruit/Adafruit_SSD1306/blob/master/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino -
BME280とOLEDをESP-WROOM-02で使ってみた
https://jiwashin.blogspot.jp/2016/01/bme280-oled-and-esp-wroom-02.html


ESP8266 2.4.0-rc1だとGFXライブラリでexceptionで動作しないようです。
2.3.0で動作確認できます。
下記参照
https://github.com/esp8266/Arduino/issues/3589
通りすがりさん、情報ありがとうございます。
リンク先読んで試してます。