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

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ
122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス
2015年06月09日 元々1ページだったサポートページを7ページに分割。
2016年01月13日 7ページ構成から8ページ構成に変更。

13.MGLCDライブラリの主な関数(LED制御、ボタン状態取得)

グラフィックLCDシールドには、LCDだけではなく、小さなLEDが1つとボタン(タクトスイッチ)が4つ付いています。LEDの制御やボタンの状態の取得も、MGLCDライブラリを使ってできます。

13-1.Led関数

LEDの制御には、Led関数を使います。Led関数の構文は次の通りです。

MGLCD.Led(LED番号,LEDの状態)

LED番号には、LEDの番号を指定します。LED番号は0~LEDの数-1の範囲の整数です。今回販売しているグラフィックLCDシールドにはLEDが1つしかないため、LED番号は常に0となります。

LEDの状態は、Led関数実行後のLEDの状態を表します。LEDの状態を表す定数が、次の通り宣言されています。

定数 意味
MGLCD_LED_OFF 値は0。LEDを消灯することを表す。
MGLCD_LED_ON  値は1。LEDを点灯することを表す。
MGLCD_LED_BLINK 値は2。LEDを点滅させることを表す。
MGLCD_LED_TOGGLE 値は3。Led関数呼び出し前にLEDが点灯している場合は、消灯させることを意味する。Led関数呼び出し前にLEDが消灯している場合は、点灯させ ることを意味する。Led関数呼び出し前にLEDが点滅していた場合は、Led関数の呼び出しがエラーになる。

例えば、次の例はLEDを消灯させます。

MGLCD.Led(0,MGLCD_LED_OFF);

Led関数の返り値はLed関数呼出し後のLEDの状態です。(後述する、LEDの数の取得の際は例外)得られる値は、MGLCD_LED_OFF、MGLCD_LED_ON、MGLCD_LED_BLINKの3つの値の内1つになります。通信エラーなどが発生した場合は、Led関数は負の値を返します。

Led関数の第2引数をMGLCD_GET_LED_STATE(値が127の定数)に指定すると、LEDの状態を変更せず、単に現在のLEDの状態を取得します。得られる値は、MGLCD_LED_OFF、MGLCD_LED_ON、MGLCD_LED_BLINKの3つの値の内1つになります。

具体的には、次の呼び出しでLEDの状態が取得できます。

MGLCD.Led(0,MGLCD_GET_LED_STATE)

また、シールドに付いているLEDの数は、次の様にして取得できます。

MGLCD.Led(MGLCD_GET_LED_NUM)

このように第1引数をMGLCD_GET_LED_NUM(値は126)にして、第2引数を省略すると、返り値がLEDの数になります。今回製作したグラフィックLCDシールドはLEDが1個なので、1が返ります。

13-2.ReadButton関数

ボタン(タクトスイッチ)の状態の取得には、ReadButton関数を使います。ReadButton関数の構文は次の通りです。

MGLCD.ReadButton(ボタン番号)

ボタン番号には、ボタンの番号を指定します。ボタン番号は0~ボタンの数-1の範囲の整数です。今回販売しているグラフィックLCDシールドにはボタンが4つあるので、0~3の数を指定します。

ReadButton関数の返り値として、以下の定数が宣言されています。

定数 意味
MGLCD_BUTTON_OFF 値は0。ボタンが押されていないことを示す。
MGLCD_BUTTON_ON 値は1。ボタンが押されていることを示す。

ボタンの状態の取得に成功すると、上記のいずれかの値が返りますが、ボタン番号が不正だったり、通信エラーが発生するなどしてボタンの状態が取得できないと、負の値を返します。

ボタンの数を取得するには、次の様にします。

MGLCD.ReadButton(MGLCD_GET_BUTTON_NUM)

MGLCD_GET_BUTTON_NUMは、ボタンの数を取得する際に使う定数で、値は127です。今回販売しているグラフィックLCDシールドにはボタンが4つあるので、ReadButton(MGLCD_GET_BUTTON_NUM)は4を返します。

13-3.Led関数とReadButton関数を使ったデモスケッチ

Led関数とReadButton関数を使ったデモスケッチを示します。スケッチを実行すると、LEDの個数、ボタンの個数、および各ボタンの状態を表示します。また、LEDの点灯/消灯を、SW1の状態に連動させます。なお、このスケッチは、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());

  // LEDの個数の表示
  MGLCD.Locate(0,0);
  MGLCD.print("LEDs:");
  MGLCD.print(MGLCD.Led(MGLCD_GET_LED_NUM));

  // ボタンの個数の表示
  MGLCD.print("  Buttons:");
  MGLCD.println(MGLCD.ReadButton(MGLCD_GET_BUTTON_NUM));

  // SW1 SW2・・・を表示
  for(int i=0; i<MGLCD.ReadButton(MGLCD_GET_BUTTON_NUM); i++) {
    MGLCD.Locate(i*5,2);
    MGLCD.print("SW");
    MGLCD.print(i+1);
  } // for i
}

void loop ()
{
  // ボタンの状態を取得し、表示する
  for(int i=0; i<MGLCD.ReadButton(MGLCD_GET_BUTTON_NUM); i++) {
    MGLCD.Locate(i*5,3);
    if(MGLCD.ReadButton(i)==MGLCD_BUTTON_OFF) {
      MGLCD.print("OFF");
    } else {
      MGLCD.print("ON ");
    }
  } // for i     

  // SW1の状態に応じてLED1を点灯/消灯する
  if(MGLCD.ReadButton(0)==MGLCD_BUTTON_OFF) { // SW1は0番目のボタンであることに注意
    MGLCD.Led(0,MGLCD_LED_OFF); // LEDを消灯
  } else {
    MGLCD.Led(0,MGLCD_LED_ON); // LEDを点灯        
  }
}
写真27、デモスケッチの実行結果
↑ 画像をクリックすると拡大
写真27、デモスケッチの実行結果

14.さらに使い方を勉強するために

ここまで、グラフィックLCDシールドの大まかな使い方を説明しましたが、さらに詳しい使い方を勉強するために、以下のページを是非ご覧ください。

Arduino用122X32モノクログラフィックLCDシールド(Rev.A)の製作 … グラフィックLCDシールドの古い基板の使い方の説明。部品の配置などが今の基板と微妙に異なったり、使用しているMGLCDライブラリのバージョンが古かったりするが、それらの点に注意して読めば、分かりやすい教材になる。

MGLCDライブラリ … グラフィックLCDシールドを動作させるのに必要なMGLCDライブラリの解説。

Arduino用122X32モノクログラフィックLCDシールド(Rev.C)の製作 … グラフィックLCDシールドを使った簡単なゲームを紹介している。

LCDモジュールを使ったレベルメータの製作(3)… グラフィックLCDシールドを使った、オーディオ用のレベルメータの作り方を紹介している。

写真28、グラフィックLCDシールドを使ったレベルメータ
写真28、グラフィックLCDシールドを使ったレベルメータ

15.問合せ先

122X32モノクログラフィックLCDシールドは、販売をスイッチサイエンス妙楽堂および三月兎に委託しております。

もし、輸送上のトラブルが発生した場合は、委託販売業者にご連絡願います。

技術的な問題などが発生した場合は、こちらのフォームからメールをいただきますよう、お願いします。その際、メールのタイトルは「グラフィックLCDシールドについて」としてください。

目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

関連ページ

関連製品

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