ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する(2)
■アナログ入力ポートのデータをLCDに表示する
前回LCDモジュールにhello worldの文字列を表示しました。今回は電源電圧をボリュームで分圧した電圧をアナログ入力ポートで読み取り、その値をLCDモジュールに表示します。ケーブルの仕様の確認を行い、今回使用するLCDライブラリの機能を確認し、プログラムを作り動かします。
●LCDモジュールとArduinoを接続する
LCDモジュールとArduinoを接続するためのケーブルを用意します。データ・ビット4ビット分の4本、制御ビット3ビット分の3本、電源線の2本で計9本のケーブルです。
制御ビットのR/WビットはLCDモジュール側でGNDに接続しておけばEとRSの2本のラインで済ますことができます。この場合、モジュールからの読み取り処理は行えなくなりますが、通常の使い方では読み取り処理が行えなくても困ることはありません。
以前にこのモジュールを作成した時(2009年)はLCDライブラリが対応していなかったので、3本の制御ビットをArduinoから制御するようになっています。
●使用する部品
次の部品を用意します。
- 太さ0.3mm2カラーリード線
- 2ピン ピンヘッダ(電源用)
- 3ピン ピンヘッダ(制御ビット用)
- 4ピン ピンヘッダ(データ・ビット用)
- 5ピン ピンソケット(電源・制御ビット用)
- 4ピン ピンソケット(制御ビット用)
- 1.5mmφ熱収縮チューブ
リード線の被覆はワイヤ・ストリッパのAWG24のゲージでむきました。
●はんだ付けし熱収縮チューブでカバー
リード線とピンソケット、ピンヘッダとの接続ははんだ付けでします。はんだ付けは、あらかじめ、次に示すようにピンヘッダとリード線に少し厚めにはんだメッキしておきます。
はんだメッキした部分を重ねてはんだゴテで熱すると、はんだが溶けてはんだ付けができます。
はんだ付けした後は熱収縮チューブでカバーし、ドライヤでしっかり加熱してチューブを収縮してはんだ付け部をカバーします。熱収縮チューブは約80℃以上で収縮するタイプならドライヤの熱で収縮します。約115℃から収縮する熱収縮チューブはニクロム線にできるだけ近づけます。
両端のはんだ付けをする前に熱収縮チューブを通しておくのを忘れないでください。電源のリード線はプラス電源を赤、マイナス電源(GND)を黒にします。5ピンのピンソケットは端から赤の電源プラス、次を黒のGNDにします。色分けしておくと接続の間違いを防ぐことができます。
LCDモジュールのピンヘッダは、次に示すように左上がピン番号1番のプラス電源、2番のGND、3番ピンは輝度調整で半固定抵抗からの出力をユニバーサル基板内で処理しているのでピンヘッダに出していません。次の4ピンからが制御ビットで、その後の11番から14番がデータ・ビットです。
●LCDモジュールとArduinoの接続
LCDモジュールとArduinoの接続は次に示すように、電源はArduinoの電源ヘッダのGNDおよび5Vに接続します。前回の記事も参照して配線してください。
制御ビット、データ・ビットは次のように接続しています。
LCDモジュール | Arduino |
---|---|
RS (3) | 10 |
R/W (4) | 9 |
E (5) | 8 |
- | - |
DB4 (7) | 7 |
DB5 (8) | 6 |
DB6 (9) | 5 |
DB7 (10) | 4 |
※()内の数字はユニバーサル基板に取り付けたピンヘッダのピン番号。
●LCDへの書き込みを行うプログラム
LCDモジュールを使用するときは、LCD処理のライブラリを読み込む必要があるので、次に示すライブラリ「LiquidCrystal.h」を読み込む命令をスケッチの先頭にセットします。
#include <LiquidCrystal.h> |
次に、void setup()の前にLCDモジュールの接続条件を必ず設定してから、LCDモジュールのスケッチを記述します。
LiquidCrystal lcd(rs, rw, enable, d4, d5, d6, d7) |
以上でLCDモジュールとArduinoの接続条件を設定し、変数lcdでLCDライブラリが利用できるようになります。
LCDへの書き込みに関する処理は次の処理が用意されています。
◆LCDモジュールの初期化
LCDモジュールとArduinoの接続状態を指定します。データ転送は4ビットまたは8ビットを選択できます。Arduinoの場合は利用できるディジタル・ポートの数に限りがあるので4ビットのモードを選択しています。
LiquidCrystal(rs, enable, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7) |
今回はrwを使用していますが、今後は6ビットで接続することをメインに考えます。
◆LCDの表示範囲の設定
LCDキャラクタ・ディスプレイの表示領域を示します。設定しない場合は16桁1行表示になります。次のように使用します。
lcd.begin(cols, rows) |
パラメータの colsは 表示列数を、rowsは表示行数を指定します。
◆表示のクリア
LCDの表示をクリアして表示のためのカーソル・ポジションを0、0の位置にセットします。書式は次のようになります。
lcd.clear() |
◆カーソルをホーム・ポジションへセット
LCDへ文字を表示するためのカーソルを上の行の左端のホーム・ポジションにセットします。書式は次のようになります。
lcd.home() |
◆カーソル・ポジションをセット
LCDモジュールの任意の表示位置にカーソルをセットします。書式は次のようになります。
lcd.setCursor(col,row) |
colは0から15、rowは0から1の範囲の値をカーソル位置としてセットします。この後、lcd.print、lcd.writeで出力を行うとこのカーソル位置から文字が出力されます。
◆データの書き出し
data: the character to write to the display lcd.write(data) |
dataは、バイト単位の文字データ(キャラクタ・データ)としてそのまま出力します。
◆データのプリント
dataはchar、byte、int、longなどの数値データ又はstringの文字列となります。
文字列以外のdataは、数値データとして数値を示す文字列に変換してLCDに表示されます。書式は次のようになります。
lcd.print(data, BASE) |
BASEが指定されている場合は、BINはbinary、DECは10進表示、OCTは8進表示、HEXは16進表示となります。
●実際のテスト・プログラム
実際のテスト・プログラムは次のようなものを作りました。最初にhello! worldを表示し、5秒待って表示をクリアしnextstepを表示します。その後lcd.home()を実行しopenを表示します。
その後2行目の5文字目からcloseを表示します。その後カーソルの位置を2行目の先頭にセットします。その後128の値を持った変数をwrite()とprint()関数で表示し、その違いを確認します。
●実行結果
最初の表示です。
最初の表示がクリアされnextstepが表示されます。
openとcloseを表示した後、値125を持った変数taを二つの方法で表示しています。
次回、このプログラムの実行結果を検討します。
(2016/2/29 V1.0)
(2016/3/1 V1.1)LCD12ピンのピン番号を修正しました。
<神崎康宏>
バックグラウンド
熱収縮チューブ;スミチューブのカタログ
http://www.sumitube.com/products/sumitube/
ワイヤ・ストリッパのゲージ;AWG(American Wire Gauge)とmm2表示の2種類があります。電子工作では細めの電線を使います。電線によって被覆の厚みが異なります。銅線の直径が0.3mm2より線のとき、AWG24もしくは0.5mm2のゲージの穴に挿しこんで被覆をむくと、銅線に傷もつきにくいです。写真は0.9mm2が最小のワイヤ・ストリッパです。
AWG 直径[mm] 断面積[mm2] 30 0.25 0.05 29 0.27 0.06 28 0.32 0.08 27 0.36 0.1 26 0.4 0.13 25 46 0.16 24 0.51 0.2 23 0.57 0.25 22 0.64 0.32 21 0.72 0.4 20 0.81 0.51 18 1 0.81 16 1.3 1.28 14 1.6 2.04 参考文献 住友電工 AWG-mm換算表