こんばんは、よつばです。
===
本件、解決しました。(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
通りすがりさん、情報ありがとうございます。
リンク先読んで試してます。