ハードシーケンサ開発。(その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++; }