ロータリエンコーダをつないで、右、左回転判別を行いその結果をGLCD上に表示させる事は出来たのですが、
古い表示が残っていて見づらい画面しか得られません。色々、ArduinoのGLCD関連を調べてみました。
どうもある座標で表示した文字(古い文字)は新しい文字とORをとられているようです。
これを消すための関数、GLCD_FillRange()を使えばXORを取り古い文字は書き換えられる様です。
しかし、この関数はコンパイルでエラーになります。
GLCD_FillRage(Xp0,Yp0,Xp1,Yp1,mode);関数
Xp0,Yp0が開始座標、Xp1,Yp1が終点座標の4角の部分をmodeでいじることができます。
mode=0 エリアを消す
mode=1 エリアを塗りつぶす
mode=2 エリアを反転する
この関数がうまく動いてくれないので別関数を調べてみました。
GLCD.FillRect(10,25,10,25,WHITE);があります。
引数の意味はほぼ同じで、modeの部分がWHITE,BLACKの2通りになります。
つまりWHITEで消去できることになります。
これを使うと下記のように古い文字は残りません。
プログラムで下記の座標にRを出した場合、このエリアを四角で囲む座標を出すのは、文字フォントのドット数を調
べて指定するのは面倒な作業になります。
GLCD.GotoXY(10,25);
GLCD.Puts("R");
そこでこの座標を開始も、終点も同じにしてみましたが、問題なく古い文字はきえます。
GLCD.FillRect(10,25,10,25,WHITE);
取りあえずはこの関数を使うことで期待する結果を得ることが出来ることが分かりました。
しかし、C言語も怪しいところにさらにArduino文法を使わなければならないのは、いやはや、、、大変です。
これはもう挫折しますね。
※コメント投稿者のブログIDはブログ作成者のみに通知されます