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を動作させるための設定については、次回のエントリで書きます。
ではっ!
ディスカッション
コメント一覧
まだ、コメントがありません