商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス |
2015年06月09日 | 元々1ページだったサポートページを7ページに分割。 |
2016年01月13日 | 7ページ構成から8ページ構成に変更。 |
グラフィックLCDシールドには、LCDだけではなく、小さなLEDが1つとボタン(タクトスイッチ)が4つ付いています。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が返ります。
ボタン(タクトスイッチ)の状態の取得には、ReadButton関数を使います。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を返します。
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を点灯 } }
ここまで、グラフィックLCDシールドの大まかな使い方を説明しましたが、さらに詳しい使い方を勉強するために、以下のページを是非ご覧ください。
・Arduino用122X32モノクログラフィックLCDシールド(Rev.A)の製作 … グラフィックLCDシールドの古い基板の使い方の説明。部品の配置などが今の基板と微妙に異なったり、使用しているMGLCDライブラリのバージョンが古かったりするが、それらの点に注意して読めば、分かりやすい教材になる。
・MGLCDライブラリ … グラフィックLCDシールドを動作させるのに必要なMGLCDライブラリの解説。
・Arduino用122X32モノクログラフィックLCDシールド(Rev.C)の製作 … グラフィックLCDシールドを使った簡単なゲームを紹介している。
・LCDモジュールを使ったレベルメータの製作(3)… グラフィックLCDシールドを使った、オーディオ用のレベルメータの作り方を紹介している。
122X32モノクログラフィックLCDシールドは、販売をスイッチサイエンス、妙楽堂および三月兎に委託しております。
もし、輸送上のトラブルが発生した場合は、委託販売業者にご連絡願います。
技術的な問題などが発生した場合は、こちらのフォームからメールをいただきますよう、お願いします。その際、メールのタイトルは「グラフィックLCDシールドについて」としてください。
商品名 | 128×64モノクログラフィックLCDシールド | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス | |
サポートページ | 128×64モノクログラフィックLCDシールドサポートページ |
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |