表示デバイス( オプション )に描画します。文字列以外に画像( ビットマップや丸や四角などのベクトル図形 )も描画できます。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
- 画面の原点とサイズ
- 色の指定方法
- 描画のメンバ関数
- begin()
- fillScreen( int nColor )
- print( string strText )
- setCursor( int nX, int nY )
- setTextSize( int nSize )
- setTextColor( int nColor )
- drawLine( int nX1, int nY1, int nX2, int nY2, int nColor )
- drawRect( int nX1, int nY1, int nWidth, int nHeight, int nColor )
- drawCircle( int nX1, int nY1, int nRadius, int nColor )
- fillCircle( int nX1, int nY1, int nRadius, int nColor )
- 参考情報
画面の原点とサイズ
画面の原点は、左上です。
画面のサイズは以下のとおりです。
- 横( OLED_WIDTH ): 96 pixcel
- 縦( OLED_HEIGHT ): 96 pixcel

テキストは任意の場所に描画できますが、行列の場合は以下を目安にしています。デフォルトの文字サイズは 5 × 7 ピクセルです。
色の指定方法
ピクセルフォーマットが RGB565 なので 16bit では以下のとおりです。
RGB フォーマットの色指定を、RGB565に関数 rgbToRGB565( uint8_t nR, uint8_t nG, uint8_t nB ) で変換することができます。
以下は色の指定の例です。
#define RED 0xF800
#define GREEN 0x07E0
#define BLUE 0x001F
#define BLACK 0x0000
#define WHITE 0xFFFF
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
描画のメンバ関数
よく使用するメンバ関数の概要です。
詳細な情報は以下の Webページが参考になります。
・[ESP32]Adafruit GFX Library API まとめ with Arduino IDE: 描画方法など各種のまとめです。とても見やすいです。/ farmsoft
begin()
・機 能: OLEDを初期化します。
fillScreen( int nColor )
・機 能: 画面全体を指定した色で塗りつぶします。
・引 数: int nColor: 塗りつぶす色
print( string strText )
・機 能: テキストを表示します。
・引 数: string strText: 表示するテキスト
setCursor( int nX, int nY )
・機 能: 文字の書き出し位置を指定します。
・引 数: int nX: X軸 / int nY: Y軸
setTextSize( int nSize )
・機 能: 文字の大きさを指定します。
・引 数: int nSize: デフォルトは 5×7 ピクセルで 1 を指定します。2 以上は 1 のときはその倍数の大きさです。
setTextColor( int nColor )
・機 能: 文字の色を指定します。
・引 数: int nColor: デフォルトは 5×7 ピクセルで 1 を指定します。16ビットの値で色を指定
drawLine( int nX1, int nY1, int nX2, int nY2, int nColor )
・機 能: 座標 ( X1, Y1 ) から座標 ( X1, Y1 ) に指定した色で線を引きます。
・引 数: int nX1: 始点の X座標 / int nY1: 始点の Y座標 / int nX1: 終点の X座標 / int nY1: 終点の Y座標 / int nColor: 16ビットの値で色を指定
drawRect( int nX1, int nY1, int nWidth, int nHeight, int nColor )
・機 能: 始点 ( X1, Y1 ) から幅 nWidth、高さ nHeight の四角を指定した色で描きます。
・引 数: int nX1: 始点の X座標 / int nY1: 始点の Y座標 / int nWidth: 四角の幅 / 四角の高さ: int nHeight / int nColor: 16ビットの値で色を指定
drawCircle( int nX1, int nY1, int nRadius, int nColor )
・機 能: 中心 ( X1, Y1 ) から半径 nRadius の円を指定した色で描きます。( 中は塗りつぶしません。 )
・引 数: int nX1: 中心の X座標 / int nY1: 中心の Y座標 / int nRadius: 半径 / int nColor: 16ビットの値で色を指定
fillCircle( int nX1, int nY1, int nRadius, int nColor )
・機 能: 中心 ( X1, Y1 ) から半径 nRadius の円を指定した色で描きます。( 中は塗りつぶします。 )
・引 数: int nX1: 中心の X座標 / int nY1: 中心の Y座標 / int nRadius: 半径 / int nColor: 16ビットの値で色を指定
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- lcd-image-converter: 画像データの変換を行うツール
- ArduinoだけでOLED SSD1331に画像を表示する方法: Qiita / @osobono
- 小型カラー液晶SSD1331とAdafruit GFX ライブラリを使用してbitmapを表示する: Qiita / @ELIXIR