ソフトウエア

表示デバイス

オプションとして追加搭載する表示デバイスのコードです。Adafruit 社が提供する Arduino 向けのライブラリを使用しています。

◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に: 

プログラムの仕様

コーディングに必要な必要な仕様は以下のとおりです。

表示の概要

  • 画素数: 96 × 64 dots( RGB )
  • 表示色: 65,536 Colors

ポートの割り当て

名 称ESP32 PinESP32 ポート使 途
OLED-SLK8IO32 / HSPICLKクロック
OLED-SDA9IO33 / HSPIDデータ
OLED-DC27IO16データとコマンドの指示( 選択 )
OLED-RES26IO4リセット
OLED-CS( 6 )( IO34 )デバイスの選択

OLED に接続している SPIは OLEDのみのため、CSは Gndに固定しています。常に OLEDを選択している状態です。ESP32と接続していませんが、ダミーの出力として Pin.6 を指定しています。Pin.6 は電源電圧検出用のADC 入力で出力には影響がありません。●

コードの出力ポートの定義は、ESP32 ポートの番号で指定します。( 例:const uint8_t OLED_SLK = 32; )

Adafruit_SSD1331ライブラリの仕様

Adafruit_SSD1331( Adafruit_SSD1331 )ライブラリの仕様は以下のとおりです。

  • SSD1331 OLED ディスプレイドライバ
  • 128×96 ピクセルの解像度、16ビットカラー( RGB565フォーマット )
  • SPI インタフェース
  • グラフィックス表示用の Adafruit_GFXライブラリと連携

ライブラリ: Adafruit SSD1331 Arduino Library

ライブラリのインクルード

使用するライブラリは以下のとおりです。
Adafruit_GFX は Adafruit_SSD1331 から参照されるライブラリです。表示デバイスの抽象化をおこない、点や線、円などの描画、塗りつぶしなどを行います。テキストのフォントサイズの変更や色の変更もできます。Adafruit_SSD1331.h は前項のとおり、SPI.h は SPI通信を行うライブラリです。

ライブラリ: Adafruit-GFX-Library

#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1331.h>  
#include <SPI.h> 

データの構造

データの構造は以下のとおりです。

グローバル定義

グローバル定義は以下のとおりです。

名 称説 明
OLED_HEIGHTint64表示のピクセル数( 縦方向 )
OLED_WIDTHint96表示のピクセル数( 横方向 )

コード

コードは以下のとおりです。

オブジェクト

SPI はピン割り当ての都合上、ハードウエア SPIを使用できませんのでソフトウエア SPIにします。そのため、オブジェクトの生成は以下のとおりです。ハードウエア SPIとソフトウエア SPIは、オブジェクト生成時の引数の取り方が異なります。ソフトウエア SPIはすべてのピンを引数で指定します。( ハードウエア SPIは、DC, CS, RES の制御線だけの指定です。)

//==============================================================================
// object
//==============================================================================
//---- OLED ----
Adafruit_SSD1331 display = Adafruit_SSD1332( OLED_CS, OLED_DC, OLED_SDA, OLED_SLK, OLED_RES );

内部関数

外部から直接アクセスできずモジュール( 特定のスコープ内 )で使用する関数です。


display.begin() で表示デバイスの使用開始で、以降はコマンド(メソッド)により表示をおこないます。
以下の例は、開始後に全面黒色として、後から display.drawRGBBitmap()で画像を表示しています。表示する画像は Img_TESTです。

void setup(void) {

	・・・

	/* Initialize Display */
	display.begin();
	display.fillScreen( BLACK );

	・・・

	display.drawRGBBitmap( 0, 0, Img_TEST, OLED_WIDTH, OLED_HEIGHT );
	delay(1000);
}	

描画

LCD Image Converter

参考情報

参考になる情報は以下のとおりです。

このホームページ内

他のWebサイト

カテゴリー
最近の記事 おすすめ記事

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

TOP