LCDに文字を表示するライブラリ「TextLCD」のリファレンスはこちら。
Text LCD - Cookbook | mbed
http://mbed.org/cookbook/Text-LCD
こちらを確認すると cls() は画面をクリアしてカーソルを(0, 0)の位置に移動する。
locate() は指定の位置に移動する命令の様です。
検証(1)
そこでこの様なプログラムを書いてみました。
#include "mbed.h" #include "TextLCD.h" TextLCD lcd(p24, p26, p27, p28, p29, p30); int main(void) { lcd.cls(); // (1) lcd.printf("A"); // (2) lcd.locate(2, 0); // (3) lcd.printf("B"); // (4) lcd.locate(1, 1); // (5) lcd.printf("C"); // (6) lcd.locate(3, 1); lcd.printf("D"); return 0; }
(1) 画面をクリアしてカーソルを(0,0)の位置に
(2) カーソル位置に A を表示。
(3) カーソル位置を(2, 0)に移動(0からのカウントになるので実際の位置はLCDの3列目、1行目となる)。
(4) カーソル位置 B を表示。
(5) カーソル位置を(1, 1)に移動(0からのカウントになるので実際の位置はLCDの2列目、2行目となる)。
(6) カーソル位置 C を表示。
検証(2)
次のプログラム。
#include "mbed.h" #include "TextLCD.h" TextLCD lcd(p24, p26, p27, p28, p29, p30); int main(void) { lcd.cls(); lcd.printf("A"); lcd.printf("B"); lcd.printf("C"); lcd.locate(15, 0); lcd.printf("DEF"); return 0; }
- lcd.locate()を使わずにlcd.printf()を何回も実行した場合、カーソルは進むのか
- 1行目最後の位置にカーソルを移動し、3文字のテキストを表示した場合、切れるのかそれとも2行目に表示されるのか。
- lcd.printf()を実行した場合、カーソル進む
- 1行目最後で3文字のテキストを表示しようとすると1文字は1行目に2文字目以降は2行目の先頭から表示される。
検証(3)
StarBoard Orangeに同封されていたLCDの説明が書かれた紙に「文字コード表」が有ったがこれはmbedのプログラムでも使えるのか?半角文字で記述した文字列で指定は可能か?を検証。
#include "mbed.h" #include "TextLCD.h" TextLCD lcd(p24, p26, p27, p28, p29, p30); int main(void) { lcd.cls(); char c[2]; c[1] = 0; c[0] = 0xB1; lcd.printf(c); c[0] = 0xF7; lcd.printf(c); lcd.printf("%c%c", 0xFB, 0xFF); lcd.locate(0, 1); lcd.printf("アカサタナ"); return 0; }
0xB1→半角のア
0xF7→π
0xFB→万
0xFF→塗りつぶし
"アカサタナ"→半角文字での指定
紙に書かれていた文字コードを指定するとちゃんとその文字が表示出来ました。
"アカサタナ"の部分についてはコンパイル後に警告が表示されましたがコンパイル自体は成功。動作にも問題無し。