● e-DISPに漢字を表示してみる
今度は、e-DISPに漢字を表示してみましょう。スケッチのどこを書き換えればいいかわかりますよね?
setup()関数の中で、mySerial.print()関数の引数""の中を書き換えます。
変更前
変更後
今度は、e-DISPに漢字を表示してみましょう。スケッチのどこを書き換えればいいかわかりますよね?
setup()関数の中で、mySerial.print()関数の引数""の中を書き換えます。
変更前
mySerial.println("Arduino : e-DISP"); // 何か文字を表示してみる変更後
mySerial.println("漢字"); // 何か文字を表示してみる
Arduino IDEからVerifyしてUpload to I/O Boardしてみてください。e-DISPに「漢字」と表示表示されましたか?残念ながら表示されていませんね。文字化けしています。これは、e-DISPはデフォルト設定ではSHIFT-JISの文字コードを扱うのに対して、Arduinoでは、文字コードにUTF-8を使用しているからです。
e-DISPは複数の文字コードをサポートしています。e-DISPの仕様書を読んでみると、サポートしている文字コードにはUTF-8が含まれています。では、改めて文字コードをUTF-8に切り替えてから「漢字」を表示してみましょう。スケッチに次の行を追加してください。

VerifyしてUpload to I/O Boardしてみてください。今度は、e-DISPに「漢字」と表示されているはずです。※もし、うまく表示されない場合は、一度e-DISPの電源をOFFにしてから再度ONにして、それからプログラムを走らせてみてください。
e-DISPでは、拡張されたエスケープ・シーケンス("\x1B"に続く制御コード)を使って、文字コードを変更したり、文字のサイズを変更したりできます。Arduinoから日本語を表示するときには、文字コードをUTF-8に変更することをお忘れなく。
● 文字の大きさを変えてみる
さきほどの文字コードを変更したときと同じ要領で、文字の大きさを変えてみましょう。
次のコードを追加してみてください。

e-DISPには、すごく小さい文字で「漢字」と表示されたはずです。小さいサイズの文字は4x8ドットで表示されています。ほかには、5x12ドットの中サイズ、8x16ドットの大サイズの三つのサイズから選択できます。
画面にたくさん文字を表示したいときには小サイズ(4x8)を、見やすく大きな文字を表示したいときには大サイズ(8x16)を、のように、用途に合わせて文字のサイズを変えてみるのもよいでしょう。
●文字を表示する位置を指定してみよう
文字はカーソルのある位置に表示されます。エスケープ・シーケンスを使ってカーソルの位置を指定すれば、任意の位置に文字を表示できます。

カーソル位置を指定するために、次のような関数を用意しておくと便利でしょう。
また、カーソルを表示するか表示しないかを制御できます。
カーソル表示がいらないときは、消してしまいましょう。
e-DISPは複数の文字コードをサポートしています。e-DISPの仕様書を読んでみると、サポートしている文字コードにはUTF-8が含まれています。では、改めて文字コードをUTF-8に切り替えてから「漢字」を表示してみましょう。スケッチに次の行を追加してください。
mySerial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
mySerial.println("漢字"); // 何か文字を表示してみる
VerifyしてUpload to I/O Boardしてみてください。今度は、e-DISPに「漢字」と表示されているはずです。※もし、うまく表示されない場合は、一度e-DISPの電源をOFFにしてから再度ONにして、それからプログラムを走らせてみてください。
e-DISPでは、拡張されたエスケープ・シーケンス("\x1B"に続く制御コード)を使って、文字コードを変更したり、文字のサイズを変更したりできます。Arduinoから日本語を表示するときには、文字コードをUTF-8に変更することをお忘れなく。
● 文字の大きさを変えてみる
さきほどの文字コードを変更したときと同じ要領で、文字の大きさを変えてみましょう。
次のコードを追加してみてください。
mySerial.print("\x1B@4Z"); // 文字サイズを小(4x8)に設定し、背景を含め画面をクリアします。
mySerial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
mySerial.println("漢字"); // 何か文字を表示してみる
画面にたくさん文字を表示したいときには小サイズ(4x8)を、見やすく大きな文字を表示したいときには大サイズ(8x16)を、のように、用途に合わせて文字のサイズを変えてみるのもよいでしょう。
●文字を表示する位置を指定してみよう
文字はカーソルのある位置に表示されます。エスケープ・シーケンスを使ってカーソルの位置を指定すれば、任意の位置に文字を表示できます。
mySerial.print("\x1B@4Z"); // 文字サイズを小(4x8)に設定し、背景を含め画面をクリアします。
mySerial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
mySerial.print("\x1B[7;15H"); // カーソルを(15,7)に移動
mySerial.println("漢字"); // 何か文字を表示してみる
カーソル位置を指定するために、次のような関数を用意しておくと便利でしょう。
// カーソルを(y)行(x)列に移動します
void setCursor(int x, int y) {
mySerial.print("\x1B[");
mySerial.print(y);
mySerial.print(";");
mySerial.print(x);
mySerial.print("H");
また、カーソルを表示するか表示しないかを制御できます。
mySerial.print("\x1B[>5l"); // カーソル表示をON にします。
mySerial.print("\x1B[>5h"); // カーソル表示をOFF にします。
カーソル表示がいらないときは、消してしまいましょう。
楠川 歩
e-DISP入手先 (株)ディーディーエル


コメントする