ハードシーケンサ開発。(その5:ディスプレイ表示のAPI確認)
API確認
文字だけでもいいんだけど、他になにかできるかを確認する。
描画については、固定FPSではなく処理に依存して更新頻度が変化する可変FPSを想定して作る必要がある。
つまり、スケジュールが確定していることを前提にした描画ではないということ。
また、字だけではなく枠線等も引ければ活用場面は広がるため、これを確認する。
参考:
u8g2reference · olikraus/u8g2 Wiki (github.com)
ソースコード
#include <U8g2lib.h>;
// RaspberryPiPicoに2.23インチのWaveshare製OLEDを装着して確認。
// https://www.switch-science.com/catalog/7329/
U8G2_SSD1305_128X32_ADAFRUIT_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 10, /* data=*/ 11, /* cs=*/ 9, /* dc=*/ 8, /* reset=*/ 12);
void setup(void) {
u8g2.begin(); // OLEDの初期化
u8g2.setFlipMode(0); // 画面の向きを設定、数字を変えると向きが変わる
}
int i =0;
int cnt=0;
void loop(void) {
int dv=cnt%4;//0,1,2,3
int dvx=dv%2;//0,1,0,1
int dvy=(dv > 1)?1:0;//0,0,1,1
u8g2.clearBuffer(); // バッファのクリア
u8g2.setFont(u8g2_font_ncenB08_tr); // フォント設定
//位置を指定後、数値を描画
u8g2.setCursor(0, 10);
u8g2.print(i);
u8g2.drawStr(0, 20, "MachiaWorks "); // バッファに文字列を格納
u8g2.drawStr(0, 30, "2022/09/01 @"); // バッファに文字列を格納
u8g2.drawBox(80+dvx*17, 0+dvy*16, 16, 16); // 矩形を描画
u8g2.sendBuffer(); // バッファの内容で画面を更新
delay(1000);//1秒待機
i=millis();//表示のための数値更新(本来は起動後経過秒数の取得関数)
cnt++;
}
