● e-DISPに漢字を表示してみる
 今度は、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に切り替えてから「漢字」を表示してみましょう。スケッチに次の行を追加してください。
mySerial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
mySerial.println("漢字"); // 何か文字を表示してみる

2-1.jpg
 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("漢字"); // 何か文字を表示してみる

2-2.jpg
2-3.jpg e-DISPには、すごく小さい文字で「漢字」と表示されたはずです。小さいサイズの文字は4x8ドットで表示されています。ほかには、5x12ドットの中サイズ、8x16ドットの大サイズの三つのサイズから選択できます。
 画面にたくさん文字を表示したいときには小サイズ(4x8)を、見やすく大きな文字を表示したいときには大サイズ(8x16)を、のように、用途に合わせて文字のサイズを変えてみるのもよいでしょう。

文字を表示する位置を指定してみよう
 文字はカーソルのある位置に表示されます。エスケープ・シーケンスを使ってカーソルの位置を指定すれば、任意の位置に文字を表示できます。
mySerial.print("\x1B@4Z"); // 文字サイズを小(4x8)に設定し、背景を含め画面をクリアします。
mySerial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
mySerial.print("\x1B[7;15H"); // カーソルを(15,7)に移動
mySerial.println("漢字"); // 何か文字を表示してみる

2-4.jpg
 カーソル位置を指定するために、次のような関数を用意しておくと便利でしょう。
// カーソルを(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入手先 (株)ディーディーエル




トラックバック(0)

このブログ記事を参照しているブログ一覧: Arduinoにリユース・カラーLCD「e-DISP(イーディスプ)」をつなぐ (その2)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/3197

コメントする

カテゴリ

このブログ記事について

このページは、yoshidaが2009年7月30日 15:47に書いたブログ記事です。

ひとつ前のブログ記事は「連載(46)Arduinoで何でも制御 K型熱電対でロースト・ビーフの内部の温度をモニタ(1)」です。

次のブログ記事は「Arduinoにリユース・カラーLCD「e-DISP(イーディスプ)」をつなぐ (その3)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.