しなぷすのハード製作記

122X32モノクログラフィックLCDシールドサポートページ(6)

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ
122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス 妙楽堂
2015年06月09日 元々1ページだったサポートページを7ページに分割。
2016年01月13日 7ページ構成から8ページ構成に変更。

11.MGLCDライブラリの主な関数(テキスト表示編)

11-1.内蔵フォント

グラフィックLCDシールドに採用したS12232ZAというグラフィック液晶モジュールは、キャラクタフォントを持たないグラフィックLCDですが、MGLCDライブラリがキャ ラクタフォントを持っているので、キャラクタLCDと同じ感覚で使えます。使える文字は、英数字や標準的な半角記号 (!,",#,$,%,&,=,@,*,+,-,\など)と半角カタカナです。(文字コード表参照)

11-2.print関数およびprintln関数

MGLCDライブラリで画面に文字を表示する場合は、print関数およびprintln関数を使います。使い方は、Serial変数を使ってシリアルポートに文字を送信するのと同じです。

例えば、シリアルポートに"Hello"と送信するには、次のようにします。

Serial.print("Hello");

LCDの画面に"Hello"と表示するには、SerialをMGLCDに変えて、

MGLCD.print("Hello");

とすればOKです。

シリアル出力に使える構文は全て使えるので、次の様なことができます。

MGLCD.println("Hello"); // 改行つきの文字列表示
MGLCD.print(123); // 整数の表示
MGLCD.print(123,HEX); // 16進数表示(7B)
MGLCD.print(1.23456,2); // 小数点2桁の表示(1.23)
MGLCD.print(F("ABC")); // Fマクロを使った文字列表示 

11-3.ClearScreen関数

画面を消去するには、ClearScreen関数を使って次のようにします。

MGLCD.ClearScreen();

11-4.Locate関数

文字の表示位置を制御するにはLocate関数を使います。Locate関数の構文は次の通りです。

Locate(x座標,y座標);

S12232ZAは横122ピクセル、縦32ピクセルのグラフィックLCDですが、8X6ドットフォントを用いると、横方向に20文字、縦方向に4行表 示できます。Locate関数では、左上の文字位置を原点(0,0)とし、右下の文字位置を(19,3)として座標を扱います。

Locate関数にprint関数やprintln関数が続いて呼び出された場合、直前のLocate関数で指定された座標に文字列を表示します。

11-5.SetCodeMode関数

グラフィックLCDシールドに半角カタカナを表示する場合は、SetCodeMode関数で、半角カタカナを表示できるモードに切り替えます。

MGLCD.SetCodeMode(MGLCD_CODE_UTF8);

をスケッチの中のどこかで1度実行すると、それ以降、print関数やprintln関数に半角カタカナが含まれている文字列を渡しても、正常に表示できるようになります。

Arduino IDEは、文字コードにUTF-8を用いているため、半角カタカナは1文字当たり3バイトで内部表現されています。通常LCDは、1文字当たり1バイトの文字コードを使いますから、文字コードの差異により、文字化けが発生します。

例えば、Arduino IDEに標準で付いているキャラクタLCD用ライブラリのLiquidCrystal使う場合、

lcd.print("カタカナ");

としたのでは、使っているLCDモジュールが半角カナ表示に対応していても、使っている文字コードの種類が合わないために、文字化けしてしまいます。

グラフィックLCDシールドの場合、

MGLCD.SetCodeMode(MGLCD_CODE_UTF8);
MGLCD.print("カタカナ");

とすれば、文字化けせずに"カタカナ"と表示できます。

11-6.テキスト表示機能を用いたデモスケッチ

これらの機能を使えば、例えば次の様なデモスケッチができます。スケッチを走らせると、"A トイウ モジヲ サユウニ ウゴカシマス。"と6秒表示した後、'A'と言う文字が左右に往復運動します。なお、このスケッチは、RXを10番ピン、TXを11番ピンとして、ソフトウェアシリアルを使ってLCDの制御をやっているので、ソフトウェアシリアルを用いて"Hello, world!"と表示するの場合と同様にジャンパ線を接続し、SW5をEXT側に切り替えてからスケッチを実行してください。

#include <SoftwareSerial.h> // この行はSoftwareSerial(ソフトウェアシリアル)ライブラリを呼び出すために必要
#include <mglcd.h> // この行はMGLCDライブラリを呼び出すために必要

SoftwareSerial mySerial(10,11); // RXを10番ピン、TXを11番ピンに割当ててソフトウェアシリアルを使う
mglcd_SoftwareSerial MGLCD(&mySerial,38400); // 38400bpsで通信

void setup()
{
  // LCDの初期化
  while(MGLCD.Reset());

  // print関数による半角カタカナ表示を有効にする
  MGLCD.SetCodeMode(MGLCD_CODE_UTF8);

  // スタートメッセージ
  MGLCD.print("A トイウ モジヲ サユウニ ウゴカシマス。");
  delay(6000);
  MGLCD.ClearScreen();
}

void loop ()
{
  // 'A'という文字を右方向に移動させる
  for(int i=0; i<19; i++) {
    MGLCD.Locate(i,0);
    MGLCD.print("A");
    delay(300);
    MGLCD.Locate(i,0);
    MGLCD.print(" ");        
  } // for i

  // 'A'という文字を左方向に移動させる
  for(int i=19; i>0; i--) {
    MGLCD.Locate(i,0);
    MGLCD.print("A");
    delay(300);
    MGLCD.Locate(i,0);
    MGLCD.print(" ");        
  } // for i
}
写真18、デモスケッチの実行画面(1)
↑ 画像をクリックすると拡大
写真18、デモスケッチの実行画面(1)
写真19、デモスケッチの実行画面(2)
↑ 画像をクリックすると拡大
写真19、デモスケッチの実行画面(2)

他にも色々と、テキスト表示のための関数があるのですが、別のページにリファレンスマニュアルとしてまとめます。

次のページでは、MGLCDライブラリの、主なグラフィック表示関数について説明します。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

関連ページ

関連製品

128×64モノクログラフィックLCDシールド 商品名 128×64モノクログラフィックLCDシールド
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
GLCD学習シールドキット 商品名 GLCD学習シールドキット
税抜き小売価格 1410円
販売店 スイッチサイエンス 妙楽堂 三月兎
サポートページ
S12232ZA 商品名 S12232ZA
税抜き小売価格 400円
販売店 スイッチサイエンス
サポートページ
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記