arduinoで有機ELディスプレイ(1)
SSD1306の環境構築~サンプルプログラム実行

どもです。

Arduinoで使用可能な有機ELディスプレイを購入、使ってみました。
このディスプレイを実際に使うために行った配線や設定、ハマった内容やその解決方法について書きます。

1. 購入したブツ

今回購入したのは、

0.96インチ 128×64ドット有機ELディスプレイ
(制御のために、SSD1306を使用/以降は「SSD1306」と呼称。)

です。
秋月電商で購入しています。

2. 配線

SSD1306は、I2Cでarduinoと通信します。
そのため、以下のように配線します。



なお、この図はFritzingを使用して作成しています。
またFritzingには、SSD1306のパーツが含まれていません。
今回は、GitHubで公開されていたパーツをダウンロードして、使用しています。

3. ライブラリ

配線が完了したので、次はSSD1306を動作させるために必要なライブラリをインストールします。
なお今回の作業環境は、以下の通りです。

開発/実行環境

項目 内容
OS Windows10 Pro(1909)
CPU i7-8700
メモリ 16GB
IDE Arduino IDE Ver.1.8.13
ボード Arduino Uno

インストールする必要があるライブラリは、以下の2つです。

  • Adafruit_GFX
  • Adafruit_SSD1306

これらのライブラリは、Arduino IDEのメニュー[ツール]-[ライブラリを管理…]を選択して表示される、[ライブラリマネージャ]からインストールします。
[ライブラリマネージャ]ダイアログの検索欄に、それぞれのライブラリの名前を入力して検索することで、取得が可能です。






選択するバージョンは、ともに最新のバージョンを選択します。
(現状では、Adafruit_GFXはVer.1.10.10、Adafruit_SSD1306はVer.2.4.6が、それぞれ最新となっています。)

4. サンプルの実行

SSD1306のライブラリには、画面に色々表示させるための関数、および設定があります。
いきなりそれらを使用するのは、ハードルが高いです。
なのでまず、一度サンプルプログラムを動作させ、実装を動作を確認してから、自分で実装を行うことにしました。
なお、サンプルプログラムは、Arduino IDEのメニュー[ファイル]-[環境設定]で表示される「環境設定ダイアログ」の「スケッチブックの保存場所」で指定している場所の「libraries」フォルダに格納されている(と、思います…)。
私の環境では、SSD1306のサンプルプログラムは、以下の場所に格納されていました。

(Arduino IDEのスケッチブックの格納先)\ibraries\Adafruit_SSD1306\examples

格納されているサンプルプログラムは、以下の5つです。

  • OLED_featherwing
  • ssd1306_128x32_i2c
  • ssd1306_128x32_spi
  • ssd1306_128x64_i2c
  • ssd1306_128x64_spi

今回はI2Cで通信するので、「ssd1306_128x32_i2c」と「ssd1306_128x64_i2c」の2つを動作させてみました。

4.1. ssd1306_128x32_i2cの動作

動作結果は、以下の動画です。

4.2. ssd1306_128x64_i2cの動作

ssd1306_128x64_i2cですが、そのままボードに書き込んだ状態では使用できませんでした。
このサンプルを動作指せるためには、以下の箇所(現状では、35行目)の変更が必要です。
変更前:

#define SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

変更後:

#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

「SCREEN_ADDRESS」というマクロの値を、「0x3D」から「0x3C」に変更するだけです。
この変更を行ったプログラムをボードに書き込んで動作されると、以下のように動作します。

5. まとめ

このまま続けると、エントリがとても長くなりそうなので、今回はココで一旦終了します。
SSD1306を動作させるための設定については、次回のエントリで書きます。

ではっ!