今から始める電子工作 ⑬ データを表示する その3 OLEDディスプレイの描画コマンド
SparkFun Qwiic OLED Adruino Libraryで利用できる描画コマンドなどは、大きく五つの分類があります。
<Graphics Methods>
https://github.com/sparkfun/SparkFun_Qwiic_OLED_Arduino_Library/blob/main/docs/api_graphics.md
<Arduino Print>
https://github.com/sparkfun/SparkFun_Qwiic_OLED_Arduino_Library/blob/main/docs/api_arduino.md
<Device Operations>
https://github.com/sparkfun/SparkFun_Qwiic_OLED_Arduino_Library/blob/main/docs/api_device.md
<Drawing Settings/State>
https://github.com/sparkfun/SparkFun_Qwiic_OLED_Arduino_Library/blob/main/docs/api_draw.md
<Scrolling>
https://github.com/sparkfun/SparkFun_Qwiic_OLED_Arduino_Library/blob/main/docs/api_scroll.md
Graphics Methods
display() 描画の実行
描画されたグラフィックスと消去コマンドをOLED デバイスに送信
erase() 画面の消去
グラフィックを消去し、ディスプレイを空白の状態にする。
pixel() 画面上のピクセルの値を設定
pixel(X座標, Y座標, 色の値。デフォルトは白 (1) )
黒色は0
line() 線を描く
line(開始X座標, 開始Y座標, 終点X座標, 終点Y座標, 色の値。デフォルトは白 (1) )
黒色は0
rectangle() 長方形を描く
rectangle(開始X座標 - 左上隅, 開始Y座標 - 左上隅, 幅, 高さ, 色の値。デフォルトは白 (1) )
黒色は0
rectangleFill() 長方形の塗りつぶし
rectangleFill(開始X座標 - 左上隅, 開始Y座標 - 左上隅, 幅, 高さ, 色の値。デフォルトは白 (1) )
黒色は0
circle() 円を描く
circle(円の中心のX座標, 円の中心のY座標, 半径, 色の値。デフォルトは白 (1) )
黒色は0
circleFill() 塗りつぶされた円を描く
circleFill(円の中心のX座標, 円の中心のY座標, 半径, 色の値。デフォルトは白 (1) )
黒色は0
bitmap() ビットマップを描画
ビットマップは 8 ビットでエンコードされる必要がある。各ピクセルには 8 つの y 値が含まれる。
bitmap(X座標, Y座標, ビットマップ配列へのポインタ, 幅, 高さ )
bitmap() ビットマップを描画
ビットマップは 8 ビットでエンコードされる必要がある。各ピクセルには 8 つの y 値が含まれる。
座標 [x1,y1] では、ビットマップの一部のみを描画できる。
bitmap(X0座標, Y0座標, X1座標, Y1座標, ビットマップ配列へのポインタ, 幅, 高さ )
bitmap() ビットマップを描画
ビットマップ・データ用の Bitmap オブジェクトを使用して、画面上にビットマップを描画
bitmap(X座標, Y座標, ビットマップ・オブジェクト)
text() 現在のフォントを使用して文字列を描画
text(X座標, Y座標, 描画する文字列, 色の値。デフォルトは白 (1) )
黒色は0
文字列は、const char*もしくはString
Arduino Print
setCursor() カーソルを設定
テキスト出力を開始する場所を定義する
setCursor(X座標, Y座標)
setColor() 色の設定
setColor(色)
0 = 黒、> 0 = 白
getColor() 色を取得
getColor()
戻り値;現在の色
Device Operations
begin() 初期化
begin(Wireポート, I2C アドレス)
いずれも省略するとデフォルト値が使われる。
reset() 初期状態にリセット
reset()
getWidth() 幅を取得
getWidth()
戻り値;OLEDデバイスのピクセル幅
getHeight() 高さを取得
getHeight()
戻り値;OLEDデバイスのピクセル単位の高さ
invert() 反転
invert(bool bInvert)
戻り値;true- 画面が反転している。false- 画面が通常に設定されている
flipVertical() 垂直反転
flipVertical(bool bFlip)
戻り値;画面が垂直に反転している。false- 画面が通常に設定されている
flipHorizontal() 水平反転
flipHorizontal(bool bFlip)
戻り値;画面が水平に反転している。false- 画面が通常に設定されている
displayPower() ディスプレイのオン/オフを切り替え
displayPower(bool bEnable)
戻り値;true- OLED ディスプレイの電源がON(デフォルト)。false- 電源がOFF
Drawing Settings/State
setFont() フォントを設定
デフォルトのフォントは5x7。
setFont(使用するフォント)
setFont(フォントへのポインタ)
- 5x7 <res/qw_fnt_5x7.h> QW_FONT_5X7 5 x 7のフルフォント
- 31x48 <res/qw_fnt_31x48.h> QW_FONT_31X48 31 x 48のフルフォント
- 7セグメント <res/qw_fnt_7segment.h> QW_FONT_7SEGMENT 数字のみ
- 8x16 <res/qw_fnt_8x16.h> QW_FONT_8X16 8 x 16のフルフォント
- 大きな数字 <res/qw_fnt_largenum.h> QW_FONT_LARGENUM 数字のみ
オブジェクトの属性:
- width フォントの幅(ピクセル単位)
- height フォントの高さ(ピクセル単位)
- start フォント開始文字オフセット
- n_chars 文字数
- map_width フォントマップの幅
使用例:
#include <res/qw_fnt_31x48.h> int myFontWidth = QW_FONT_31X48.width;
getFont() フォントを取得
QwiicFont * getFont()
戻り値;現在のフォントへのポインタ
getFontName() フォント名を取得
String getFontName()
戻り値;フォントの名前
getStringWidth() 文字列の幅を取得
unsigned int getStringWidth(String 文章)
文章;幅を決定するために使用される文字列
戻り値;文字列の幅(ピクセル単位)
getStringHeight() 文字列の高さを取得
unsigned int getStringHeight(String 文章)
文章;幅を決定するために使用される文字列
戻り値;文字列の高さ(ピクセル単位)
setDrawMode() 描画モードを設定
void setDrawMode(grRasterOp_t ラスタ操作)
ラスタ操作;
- grROPCopy デフォルトで描画されたピクセル値はデバイス画面にコピーされる
- grROPNotCopy 画面にコピーする前にソース値にNOT演算が適用される
- grROPNot 宛先(画面)値にNOT演算が適用される
- grROPXOR ソース値と宛先値の間でXOR演算が実行される
- grROPBlack 値が0の場合、つまり黒が目的地に描画される
- grROPWhite 値が1の場合、つまり黒が目的地に描画される
getDrawMode() 描画モードを取得
grRasterOp_t getDrawMode(void)
戻り値;現在のラスタ操作 (ROP)
Scrolling
scrollStop() スクロール・ストップ
scrollStop()
スクロールが停止し、デバイスは通常の表示操作に戻る
scrollRight() 右スクロール
scrollRight(開始ページ・アドレス(0~7), スクロールの停止/終了ページ・アドレス(0~7), スクロール・ステップ間の時間間隔)
スクロール・ステップ間の時間間隔:
- SCROLL_INTERVAL_2_FRAMES 2
- SCROLL_INTERVAL_3_FRAMES 3
- SCROLL_INTERVAL_4_FRAMES 4
- SCROLL_INTERVAL_5_FRAMES 5
- SCROLL_INTERVAL_25_FRAMES 25
- SCROLL_INTERVAL_64_FRAMES 64
- SCROLL_INTERVAL_128_FRAMES 128
- SCROLL_INTERVAL_256_FRAMES 256
scrollVertRight() 垂直方向および右方向にスクロール
void scrolVertlRight(開始ページ・アドレス(0~7), スクロールの停止/終了ページ・アドレス(0~7), スクロール・ステップ間の時間間隔)
スクロール・ステップ間の時間間隔:記載なし
scrollLeft() 左スクロール
void scrolVertlLeft(開始ページ・アドレス(0~7), スクロールの停止/終了ページ・アドレス(0~7), スクロール・ステップ間の時間間隔)
スクロール・ステップ間の時間間隔:記載なし
scrollVertLeft() 垂直方向および左方向にスクロール
void scrolVertlLeft(開始ページ・アドレス(0~7), スクロールの停止/終了ページ・アドレス(0~7), スクロール・ステップ間の時間間隔)
スクロール・ステップ間の時間間隔:記載なし