OLEDディスプレイの制御

English page

SSD1306コントローラまたはSH1106コントローラのOLEDディスプレイを制御することができます。

OLEDディスプレイ

以下のタイプのものが対象です。

  • SH1106コントローラ、128×64ピクセル
  • SSD1306コントローラ、128×64ピクセル
  • SSD1306コントローラ、128×32ピクセル

また、接続のインターフェースは、I2CとSPIに対応しています。
SSD1306と互換性がある他のコントローラのOLEDディスプレイも、SSD1306の設定にすることで、動作する場合があります。

OLED関係のブロックは、「ディスプレイ」→「OLED」のグループにあります。

「表示」→「OLED」グループのブロック

配線

OLEDディスプレイはI2CまたはSPIでマイコンに接続します。

I2Cでの配線

I2Cで接続する場合、一般的なI2C対応のモジュールと同様に、OLEDディスプレイのSDA/SCLのピンを、マイコンのSDA/SCLのピンに接続します。
例えば、無印のESP32にI2CでOLEDディスプレイを接続する場合、配線は以下の図のようになります。

I2CでOLEDディスプレイを接続

SPIでの配線

SPIで接続する場合、OLEDディスプレイのMOSI(またはSDA)のピンとSCKのピンを、マイコンのMOSI/SCKのピンに接続します。
また、OLEDディスプレイのDC/CS/RESのピンは、GPIOの任意のピンに接続します。
例えば、無印のESP32(MOSIが19番ピン、SCKが18番ピン)で、DC/CS/RESをそれぞれ2/4/5番ピンに接続する場合、配線は以下の図のようになります。

SPIでOLEDディスプレイを接続

初期化

接続方式に応じた初期化のブロックを使って、OLEDディスプレイを初期化します。

無印のESP32など、I2CやSPIのピン番号が固定になっているマイコンでは、それらのピン番号の指定がない初期化のブロックを使います。

I2C接続のOLEDディスプレイの初期化

SPI接続のOLEDディスプレイを初期化

一方、I2CやSPIのピン番号を自由に設定できるマイコンでは、それらのピン番号の指定がある初期化のブロックを使います。

ピンを指定してI2C接続のOLEDディスプレイを初期化

ピンを指定してSPI接続のOLEDディスプレイを初期化

描画

初期化ができたら、線や円などのブロックを組み合わせて、OLEDディスプレイに描画します。
ただし、描画のブロックを実行しても、すぐには表示されません。これについては後述します。

線の描画

円の描画

文字を描画する際には、まずフォントを指定しておきます。
ArduinoファームウェアとBlinkaファームウェアで、フォントを指定するブロックが異なります。
また、Arduinoファームウェアでは、文字を描画するブロックの中に、日本語と英数字を混在させることはできません。

描画結果の表示

線や円などのブロックで描画をし終わったら、描画結果を表示するブロックを実行します。
これによって、OLEDディスプレイに描画結果が表示されます。

描画結果の表示

バッファのクリア

OLEDディスプレイに描画結果を表示したままの状態で、次に表示したい描画を準備するには、バッファのクリアのブロックを使います。

バッファのクリア

なお、ディスプレイのクリアのブロックでは、OLEDディスプレイの表示もクリアされます。

ディスプレイのクリア

サンプルプログラム

サンプルプログラムは以下からダウンロードすることができます。

OLEDディスプレイに描画するサンプルプログラム

描画関係の各ブロックを使って、点/線/四角/円/文字を表示する例になっています。
初期化のブロックは、お使いのマイコンに合わせて変更してご利用ください。

OLEDディスプレイを制御するプログラムのサンプル