しなぷすのハード製作記

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の書籍購入ページに移動します。
こちらのページもおすすめです。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記