目次 [ Contents ]
Amazonで手に入るOLEDで一番安いものが400円ちょっと(2016/12/28 現在)。Arduinoで動かせなくてしばらく四苦八苦してましたが、やり方がようやく分かったので、記事にしました(ただし、I2C接続での確認のみです)。初期設定のSPI接続での動作も確認しました。(2017/3/20 追記)
購入したのはこちら。
HiLetgoのOLED
Amazonで手に入る小型のOLED の中では格安の128×64グラフィックディスプレイです。液晶と違い太陽光に負けず、視野角も完璧です。気になるのは耐久性ですが、使い続けてみないと分からないので現時点はなんとも。後は中華なので、発送、不良品等の対応に時間がかかってしまうことです。他の商品の話ですけど、見据えて1個余分に注文したら、1個だけカラになってたこともありました。まあ、そこら辺の手間を考えても購入する価値はあるんではないかと思います。
初期設定はSPIとして動作する(はずですが)、裏の配線をいじることでI2Cデバイスとしても動きます。
動かなかった理由
うまくいかなくて、試行錯誤しI2C仕様に変えてもみましたが、それでも動きませんでした。
SPIでも動作確認済み → こちら (2017/3/20 追記)
ただ、その後レビューにある通り、RESETピンへ電圧変化を与えたところ、ちゃんと動作するようになりました。Amazonの商品レビューでは、
電源投入時は電圧LOW、その後HIGHに切り替える
と解説されています。ピンを手動で切り替えることでも動作確認は出来ました。
ただ、毎回そうするのは面倒なので、Arduinoからのピンを一つ使い、その操作をやらせます。配線図のD13がそれに当たります。
SPIをI2C仕様へ
成功前にI2Cへ変更してしまったので、SPIで動くのかはまだ分からずじまいです。そのうちもう1個手に入れられたら試してみたいと思います。なにせ、小さいチップ抵抗などを付け替えるのはかなり大変で、とても戻す気になれないので。
なるべく精巧なピンセット、固定器具などは必須です。
スケッチ
setup関数内に以下のようなコードを付け足すことで起動時の電圧操作を行います。
void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); delay(10); digitalWrite(13, HIGH); }
あとは通常の通り、u8glibで動作させられます。
今まで使用していたOLEDより一手間増えて大変な部分もありますが、値段が半分なので動かせることが分かれば、場合によっては魅力的かもしれません。
SPIでもこのやり方確認できました!
わざわざありがとうございます。
ただ、SPI接続に関しては、u8glib内でリセットしてくれる仕組みがあったみたいで^^;
近々改訂しますが、
U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
を設定した上で、ピンを、
13 → DO
11 → DI
8 → RES
9 → DC
10 → CS
これでそのままサンプルスケッチが動くみたいです。
https://jumbleat.com/2017/03/16/amazon_cheap_oled_2/