2016年06月03日 | 公開。 |
AQM1248Aのハードウェアに固有の機能に関する関数について説明します。MGLCDライブラリのほとんどの関数は、対応する全てのLCDモジュールで利用できますが、ここで紹介する関数は、AQM1248Aを使用する時のみに使えます。
注:AQM1248Aの固有機能に関する関数は、MGLCDライブラリVer. 0.41以降で利用できます。Ver 0.40では使えません。
SetRegulatorVoltage関数は、コントラストの粗調整を行うのに使います。SetRegulatorVoltage関数の構文は次の通りです。
SetRegulatorVoltage関数を実行すると、調整値をオペランドとしてV0 voltage regulator internal resistor ratio setコマンド(V0コマンド)をAQM1248Aに送ります。このコマンドの働きについては、コントラスト調整に使うコマンドをご覧ください。
SetVolumeResistor関数は、コントラストの微調整を行うのに使います。SetVolumeResistor関数の構文は次の通りです。
SetVolumeResistor関数を実行すると、Electronic volume mode setコマンド(EVMSコマンド)をAQM1248Aに送り、続けて調整値をオペランドとしてElectronic volume register setコマンド(EVRSコマンド)をAQM1248Aに送ります。これらのコマンドの働きについては、コントラスト調整に使うコマンドをご覧ください。
コントラスト調整のサンプルスケッチをリスト41に示します。このスケッチを実行すると、画面が5秒おきに、写真45~写真47の様に変わります。
// ヘッダファイルのインクルード
#include <MGLCD.h>
#include <MGLCD_SPI.h>
#include <SPI.h>
// ピン割り当てとSPIクロック周波数の宣言
#define CS_PIN 10
#define DI_PIN 9
#define MAX_FREQ (1000*1000L)
// オブジェクト変数の宣言
MGLCD_AQM1248A_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);
void setup() {
// AQM1248Aの初期化
MGLCD.Reset();
// 半角カナ表示の有効化
if(strlen("ア")!=1) MGLCD.SetCodeMode(MGLCD_CODE_UTF8);
// コントラストの粗調整
MGLCD.SetRegulatorVoltage(3);
}
void loop() {
// 薄めの表示
MGLCD.SetVolumeResistor(16); // コントラストの微調整
MGLCD.ClearScreen();
MGLCD.print("ウスメ");
delay(5000);
// 標準的な表示
MGLCD.SetVolumeResistor(28); // コントラストの微調整
MGLCD.ClearScreen();
MGLCD.print("ヒョウジュン");
delay(5000);
// 濃いめの表示
MGLCD.SetVolumeResistor(34); // コントラストの微調整
MGLCD.ClearScreen();
MGLCD.print("コイメ");
delay(5000);
}
AQM1248AにはDisplay normal/reverseコマンド(表8参照)という、画面全体を白黒反転させるかどうかを指定するコマンドがあります。このコマンドを発行する関数がInvertDisplay関数です。
InvertDisplay関数の構文は次の通りです。
「反転の有無」にMGLCD_NON_INVERTを指定すると、白黒は反転せず、Line関数やSetPixel関数などにおいて、色が0の場合は白、色が1の場合は黒になります。
「反転の有無」にMGLCD_INVERTを指定すると、白黒が反転し、Line関数やSetPixel関数などにおいて、色が0の場合は黒、色が1の場合は白になります。
画面の白黒反転に関するコマンドとしては、SetInvertMode関数もありますが、こちらは、AQM1248Aのハードウェアの機能を使うのではなく、ソフトウェア的に白黒を反転します。
InvertDisplay関数とSetInvertMode関数の動作の違いについては、InvertDisplay関数の解説をご覧ください。
リスト42のスケッチを実行すると、1秒周期で、繰り返し画面全体が白黒反転(フラッシュ)します。実行時の画面を写真48と写真49に示します。
// ヘッダファイルのインクルード
#include <MGLCD.h>
#include <MGLCD_SPI.h>
#include <SPI.h>
// ピン割り当てとSPIクロック周波数の宣言
#define CS_PIN 10
#define DI_PIN 9
#define MAX_FREQ (1000*1000L)
// オブジェクト変数の宣言
MGLCD_AQM1248A_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);
void setup() {
// AQM1248Aの初期化
MGLCD.Reset();
// 半角カナ表示の有効化
if(strlen("ア")!=1) MGLCD.SetCodeMode(MGLCD_CODE_UTF8);
// メッセージの描画
MGLCD.println("ガメン ゼンタイ ガ");
MGLCD.println("1ビョウ シュウキ デ");
MGLCD.println("シロクロ ハンテン シマス。");
}
void loop() {
delay(500);
MGLCD.InvertDisplay(MGLCD_INVERT); // 白黒反転する
delay(500);
MGLCD.InvertDisplay(MGLCD_NON_INVERT); // 白黒反転を解除
}
画面の白黒反転処理は、setup関数内で行っています。500ms(0.5秒)おきに
MGLCD.InvertDisplay(MGLCD_INVERT);
と
MGLCD.InvertDisplay(MGLCD_NON_INVERT);
を交互に実行して、画面の白黒反転と、その解除を繰り返します。
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |