ArduinoでグラフィックLCDを動かす(AQM1248A編)(17)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (9) (10) (11) (12) (13) (14) (15) (16) (17) 次のページへ
2016年06月03日 公開。

5-10.MGLCDライブラリの主な関数(AQM1248Aの固有機能編)

AQM1248Aのハードウェアに固有の機能に関する関数について説明します。MGLCDライブラリのほとんどの関数は、対応する全てのLCDモジュールで利用できますが、ここで紹介する関数は、AQM1248Aを使用する時のみに使えます。

注:AQM1248Aの固有機能に関する関数は、MGLCDライブラリVer. 0.41以降で利用できます。Ver 0.40では使えません。

5-10-1.コントラスト調整機能に関する関数

5-10-1-1.SetRegulatorVoltage関数

SetRegulatorVoltage関数は、コントラストの粗調整を行うのに使います。SetRegulatorVoltage関数の構文は次の通りです。

SetRegulatorVoltage(調整値);

SetRegulatorVoltage関数を実行すると、調整値をオペランドとしてV0 voltage regulator internal resistor ratio setコマンド(V0コマンド)をAQM1248Aに送ります。このコマンドの働きについては、コントラスト調整に使うコマンドをご覧ください。

5-10-1-2.SetVolumeResistor関数

SetVolumeResistor関数は、コントラストの微調整を行うのに使います。SetVolumeResistor関数の構文は次の通りです。

SetVolumeResistor(調整値);

SetVolumeResistor関数を実行すると、Electronic volume mode setコマンド(EVMSコマンド)をAQM1248Aに送り、続けて調整値をオペランドとしてElectronic volume register setコマンド(EVRSコマンド)をAQM1248Aに送ります。これらのコマンドの働きについては、コントラスト調整に使うコマンドをご覧ください。

広告
5-10-1-3.コントラスト調整のサンプルスケッチ

コントラスト調整のサンプルスケッチをリスト41に示します。このスケッチを実行すると、画面が5秒おきに、写真45~写真47の様に変わります。

リスト41、コントラスト調整のサンプルスケッチCOPY
// ヘッダファイルのインクルード
#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);
}
写真45、リスト41の実行結果(1)
↑ 画像をクリックすると拡大
写真45、リスト41の実行結果(1)
写真46、リスト41の実行結果(2)
↑ 画像をクリックすると拡大
写真46、リスト41の実行結果(2)
写真47、リスト41の実行結果(3)
↑ 画像をクリックすると拡大
写真47、リスト41の実行結果(3)

5-10-2.画面の白黒反転に関する関数

5-10-2-1.InvertDisplay関数

AQM1248AにはDisplay normal/reverseコマンド(表8参照)という、画面全体を白黒反転させるかどうかを指定するコマンドがあります。このコマンドを発行する関数がInvertDisplay関数です。

InvertDisplay関数の構文は次の通りです。

InvertDisplay(反転の有無);

「反転の有無」にMGLCD_NON_INVERTを指定すると、白黒は反転せず、Line関数やSetPixel関数などにおいて、色が0の場合は白、色が1の場合は黒になります。

「反転の有無」にMGLCD_INVERTを指定すると、白黒が反転し、Line関数やSetPixel関数などにおいて、色が0の場合は黒、色が1の場合は白になります。

画面の白黒反転に関するコマンドとしては、SetInvertMode関数もありますが、こちらは、AQM1248Aのハードウェアの機能を使うのではなく、ソフトウェア的に白黒を反転します。

InvertDisplay関数とSetInvertMode関数の動作の違いについては、InvertDisplay関数の解説をご覧ください。

5-10-2-2.InvertDisplay関数のサンプルスケッチ

リスト42のスケッチを実行すると、1秒周期で、繰り返し画面全体が白黒反転(フラッシュ)します。実行時の画面を写真48と写真49に示します。

リスト42、InvertDisplay関数のサンプルスケッチCOPY
// ヘッダファイルのインクルード
#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); // 白黒反転を解除
}
写真48、リスト42の実行結果(1)
↑ 画像をクリックすると拡大
写真48、リスト42の実行結果(1)
写真49、リスト42の実行結果(2)
↑ 画像をクリックすると拡大
写真49、リスト42の実行結果(2)

画面の白黒反転処理は、setup関数内で行っています。500ms(0.5秒)おきに

MGLCD.InvertDisplay(MGLCD_INVERT);

MGLCD.InvertDisplay(MGLCD_NON_INVERT);

を交互に実行して、画面の白黒反転と、その解除を繰り返します。

目次へ  前のページへ (9) (10) (11) (12) (13) (14) (15) (16) (17) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

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