SpresenseでLチカから始める (5) Wireライブラリ グラフィック・ディスプレイ
海外のコンパクトな製品には小さなディスプレイがついています。検索してたくさん見つかるのが、I2CもしくはSPIのインターフェースをもった128×64のグラフィック・ディスプレイです。OLEDなのでコントラストは高く読みやすいです。左側のI2Cデバイスを使用します。
●接続
5Vで利用します。デバイスの裏面にはI2Cのスレーブ・アドレス0x78(デフォルト)と0x7Aの切り替えがあります。8ビット表記なので、Arduinoで使われる7ビットでは0x3cです。
●ライブラリの導入
OLEDのグラフィック・ディスプレイを利用している電子工作の記事を読むと、SSDから始めるライブラリを利用しています。Adafruitなどの製品は型番もライブラリも用意されていますが、ebayで入手したのはスペックでさえ不明なことがしばしばあります。
メイン・メニューのツールからライブラリ・マネージャを開きます。ssdと検索欄に入れ、最初に出てきたAcrobotic SSD1306のMore info付近をクリックして出てくるinstallボタンを押してライブラリとサンプル・スケッチをインストールします。このドライバではAdafruitのpi OLEDの表示は出ますが、文字の上部半分しか表示されません。Adafruitを含めて多くのライブラリはコンパイルに失敗します。
サンプルAcrobotic SSD1306の中のHelloOLEDを読み込みます。コンパイルして書き込みます。
I2Cのアドレスは0x3cの固定です(ACROBOTIC_SSD1306.H)。
実行状態です。
●電圧の表示
キャラクタLCDで動かしたアナログ入力の電圧を表示するスケッチを実装しました。
// 06/01/2016 Author: Makerbro
#include <Wire.h>
#include <ACROBOTIC_SSD1306.h>
void setup()
{
Wire.begin();
oled.init(); // Initialze SSD1306 OLED display
oled.clearDisplay(); // Clear screen
oled.setTextXY(0,0); // Set cursor position, start of line 0
oled.putString("start ");
delay(1000);
}
void loop() {
oled.setTextXY(0,0); oled.putString("measuring");
oled.setTextXY(1,5); oled.putString("in progress");
int sensorValue = analogRead(A0);
Serial.print(sensorValue);Serial.print(" ");Serial.println(5 * sensorValue / 1024.0);
oled.setTextXY(4,0);
oled.putString(String(5*sensorValue/1024.0) + String("V"));
delay(1000);
}