記事

ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する(3)

LiquidCrystalライブラリを使用したテスト・プログラム

 前回、次のプログラムで16文字2行表示のLCDキャラクタ・モジュールにデータの表示を行いました。この処理のためにはLiquidCrystalライブラリを使用します。
 このプログラムはテストのために1回だけ実行するので、プログラムはsetup()関数の中に記述しています。

lcd01-339bd88e.png

このプログラムの実行結果
 このプログラムを実行すると、最初に、

  hello, world!


と表示し、その後いくつかの文字列を表示し最後は次のような表示で終わります。

lcd02-1e3ece8d.png

 この経過についてプログラムの内容を確認していきます。

ライブラリ・ファイルの読み込み
 標準ライブラリであっても、#include 命令でライブラリ・ファイルを組み込む必要があります。この #include 命令で、必要なライブラリ・ファイルを読み込む命令が記述されたヘッダ・ファイル LiquidCrystal.h を読み込みます。
 この処理のための命令は次のようになり、<>の中にライブラリのヘッダ・ファイル名をセットします。この記述はプログラムの最初に行います。

  #include <LiquidCrystal.h>


 この記述は、メニューバーのスケッチ>ライブラリをインクルード を選択して表示されるライブラリのリストから該当するライブラリを選択することでもできます。

ライブラリ型の変数を指定する
 ライブラリ型の変数を定義し、その変数を利用してLCDキャラクタ・モジュールの処理を行います。

LiquidCrystal lcd(10, 9, 8, 7, 6, 5, 4);


 この命令で記述されたlcdが新しく定義されたLiquidCrystal型の変数(インスタンス)です。この変数にライブラリで定義された処理を行う関数を組み合わせてLCDキャラクタ・モジュールの処理を行います。()内の数字はLCDモジュールの制御信号線、データ信号線との接続の対応を示します。RS、R/W、E、DB4、DB5、DB6、DB7の順番となります。数字はArduinoのディジタルI/Oポートの番号です。

変数の定義
 整数変数の値を125と設定して、この変数が出力方法を変えると表示が変わるかを確認するために利用します。

int ta=125;
void setup()
{

モジュールの表示範囲の設定
 次のbegin(16,2)でLCDモジュールの文字の表示範囲は16文字、2行表示となります。この指定を行わないと1行表示となり、2行目の表示ができません。

lcd.begin(16,2);
delay(500);
lcd.print("hello, world!");


 最初の表示は1行目の左端から表示します。lcd.print("hello, world!"); の実行後はhello, world!と表示されます。次のdelay(5000); で5秒間この表示は続きます。

delay(5000);

クリア
 次の命令 lcd.clear(); でLCDモジュールの表示はクリアされ、カーソル位置が1行目の左端になります。カーソル位置に次の表示文字が表示されます。

lcd.clear();
lcd.print("nextstep");


 次に、nextstepの8文字の文字列が表示されます。10文字の hello, world! の文字列が残っていないので、表示がクリアされたのが確認できます。

delay(5000);

ホーム
 カーソルの位置をホーム・ポジション、1行目の左端の位置にセットします。home()は文字のクリアを行わない以外はclear()と同じです。

lcd.home();
lcd.print("open");


 カーソルをホーム・ポジションにセットして、nextの文字列の上にopenを表示し置き換えました。

カーソル位置のセット
 カーソルの位置はホーム・ポジションが(0,0)、2行目の右端が(15,1)となります。この表示値をsetCuror(x,y)で指定することで、カーソルの位置を設定できます。

lcd.setCursor(5, 1);
lcd.print("close");


 これで2行目の6番目からcloseが表示されます。その後カーソルの位置を2行目の左端にセットしました。

lcd.setCursor(0, 1);
lcd.write(ta);

バイト・データを表示する
 write()で書きだすときはバイト・データとして書きだします。125はヘキサ表示7Dとなり”}”の文字コードとなります。2行目の左端には }の文字が表示されています。print()では整数値と解釈し表示します。 

lcd.print(ta);


 この命令では125と表示されます。

}
void loop() {}

その他の命令
 以上の機能を利用することで、Arduinoに測定データを表示するなどの当面の用途には対応できます。このライブラリにはこのほかに、カーソルの点滅、表示データのスクロールなどの機能も用意されています。それらについては、別の機会に説明するつもりです。
 次回から、ブレッドボードに直接差し込み利用できるLCDモジュールについて検討します。

(2016/3/11 V1.0)

<神崎康宏>

連載メニュー ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する

(1)  ArduinoにLCDディスプレイを接続する準備

(2)  アナログ入力ポートのデータをLCDに表示する

(3)  LiquidCrystalライブラリを使用したテスト・プログラム

(4)  超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(1)接続

(5)  超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(2)測定した温度をLCDに表示する

(6)  超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(3)A-Dコンバータの基準電圧を変更して分解能を上げる

(7)  超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(4)SPIインターフェースのK型熱電対で温度を測定する(その1)

(8)  I2CインターフェースのLCDキャラクタ・モジュールをArduinoで使う(1)利用できる電源電圧を整理して接続(その1)

(9)  I2CインターフェースのLCDキャラクタ・モジュールをArduinoで使う(2)Wire ライブラリを使用してLCD処理の関数を作る

(10)  I2CインターフェースのLCDキャラクタ・モジュールをArduinoで使う(3)I2Cバス双方向電圧レベル変換モジュール