u8glib他の周辺デバイスを使いながらちょっとした表示を行うのに便利なSwitchScienceのI2C接続のキャラクターディスプレイを先日紹介したが、今回は同様に小型でI2C接続な128×64ドットのOLEDディスプレイについて説明する。小型・省電力で、I2C接続のため電源線と含め4線しか使わないためピンの競合の心配なく他の周辺デバイスを使いながらデバッグや情報を表示するのに便利なディスプレイである。SwitchScienceのキャラクターディスプレイと異なり、文字フォントデータは内蔵されていないため、ドット単位での描画となる。その代り、自由にグラフィックの描画や自由なサイズのテキスト出力が出来る。フリーのライブラリもあり、簡単に絵を出力できるが、その分データ領域やメモリ領域を食うと言うデメリットもある。配置がVCC/GND/SCL/SDAの並びのため、使い易くするためピンを少し加工する。ニッパでプラスチックを真ん中で折り、VCC/GNDを外向きに曲げる(画面を割らない様注意)。短めのケーブルを準備する。後はArudinoに挿すだけ。電源を逆に挿すと白煙と共に壊れてしまうので、接続には注意。ライブラリはAdafruitのssd1306のライブラリや、u8glibのライブラリが利用できる。u8libのライブラリの方が使用メモリが少なくお勧めである。UNOの場合、Adafuitのライブラリを使った場合それだけでプログラム領域60%以上、メモリ70%以上も取ってしまう。使い方は簡単なのでそれぞれの使い方について説明する。AdafruitのライブラリはAdafruit_GFXとAdafruit_ssd1306のライブラリをインポートする。https://github.com/adafruit/Adafruit-GFX-Libraryhttps://github.com/adafruit/Adafruit_SSD1306インストール後、スケッチサンプルからssd1306_128x64_i2cを開く。開いた後、setup()関数内にある下記行の0x3Dを0x3Cに変更する。128x64)後はビルドし実行するだけで動作する。UNOでプログラム領域30%程度、メモリ12%程度で済む。Arduinoを開き、Donwloadsにあるu8glib_arduino_v1.17.zip(バージョンは異なる可能性がある)をダウンロードし、ライブラリとしてインポートする。World等の適当なサンプルスケッチを開き、下記行のコメントを外す。TWI似ている定義があるので間違えない様注意。後はビルドし実行するだけで完了。Testを実行してみた動画。SwitscienseのI2Cディスプレイ同様、WiFiシールドと組み合わせて、IPアドレスやWeb経由で入力したテキストを表示する様にしてみた。UNOでWiFiシールドとOLEDディスプレイを動かすのはメモリ的に厳しく、色々削ってかなりぎりぎりの所で動いている。以下、サンプルコード。}}同OLEDディスプレイを使ってArduinoで簡易オシロスコープを作っている人もいるので、アイデア次第で色々用途が広がりそうだ。