ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する(1)
■ArduinoにLCDディスプレイを接続する準備
Arduinoは表示装置をもっていません。PCを接続する場合はシリアル通信でPCのディスプレイに表示してきました。ArduinoはPCと切り離しても単独で動作できます。単独でArduinoを利用するときには、次に示すLCDキャラクタ・ディスプレイ・モジュールを利用します。
今回利用するLCDキャラクタ・ディスプレイ・モジュールは16文字2行表示で、秋月電子通商で2001年からバックライト付きが700円(SC1602BSLB(-XA-GB-K))、バックライトなしが500円(SC1602BS-B(-XA-GB-K))で販売しています。
http://akizukidenshi.com/catalog/g/gP-00038/
バックライトの有無による取り扱いの違いはバックライトへの電源の供給の有無だけで、Arduinoとの接続や駆動するためのソフトウェアに違いはありません。消費電流はバックライト分多くなりますが、暗いところでも表示が見やすいバックライト付きを使用します。
(※)2016年ごろから配線が楽なI2CインターフェースのLCDディスプレイが主流になっています。「I2CインターフェースLCDモジュール用のライブラリを作る」を参照ください。
●LCD用のライブラリが用意されている
このタイプのLCDキャラクタ・ディスプレイ・モジュール用に対応したArduinoのライブラリが用意されています。そのため、Arduinoでセンサから読み取った値、計算した結果など容易にこのLCDキャラクタ・ディスプレイに表示できます。
寸法は85×30×13mmと少し大きめです。このLCDモジュールは、2行16桁のキャラクタ・ディスプレイとして電子工作によく使われます。
右側にある14ピンはデータの信号線、データのやり取りの制御信号と電源用です。左側にはLCDのバックライトの電源供給用端子が用意されています。
右側の信号線などは、次に示すように7×2の14ピンのヘッダをはんだ付けするようになっています。このダブルのピンヘッダはそのままではブレッドボードには利用できません。そのためケーブルで信号線などを引き出し、ケーブルのもう一方をブレッドボードに接続できるようにします。
●LCDキャラクタ・ディスプレイ・モジュールはバラエティに富んでいる
このタイプのLCDキャラクタ・ディスプレイ・モジュールは種類が多く、
- 小型化されブレッドボードに挿し込んでテストすることができるもの
- 8文字2行表示とより小型化され安価になったもの
があります。電源電圧も5V電源のほかに、最近多くなった電源電圧3.3VのArduinoなどと直接接続することができる3.3V駆動の製品も販売されています。
今回使っているのはArduino Unoなので、電源電圧は5Vに対応した製品を選んでいます。
形状、駆動電圧はバラエティに富んでいますが、Arduinoとのインターフェースとなる信号線などの役割はみな共通で、次のようになります。
●Arduinoとのインターフェース
このLCDモジュールには、Arduinoなどのマイコンとのデータの受け渡しに8ビットと4ビットで行う方法があります。どちらもライブラリが用意されています。
●ArduinoスケッチのLCDディスプレイの初期化関数
ArduinoのLCDライブラリのLiquidCrystal()がLCDの初期化処理を行う関数です。この関数は、ArduinoとLCDモジュールの接続を4本のデータ信号線で行う方法と8本のデータ信号線で接続する二つの方法に対応しています。
◆データ信号4本線で接続する場合
データ信号4本で接続する場合、ディジタル・ポートのポートを7ポート、LCDモジュールの信号線(DB4~DB7)と制御信号線(RS、R/W、E)に割り当てます。
この割り当てのためにLiquidCrystal()を次のように指定します。
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) |
◆データ信号線8本で接続する場合
データ信号線8本で接続する場合は、ディジタル・ポートの11ポートをLCDモジュールとの接続に利用します。設定は次のように行います
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7) |
ただし、この方法では、Arduinoのディジタル・ポート14ポートある内11ポートを利用することになります。実際はこの14ポートの内2ポートはシリアル通信でPCとの接続にも利用されるので、特別な理由がないかぎりデータ信号線4本で接続します。
●LCDモジュールへの書き込みのみにすると
LCDキャラクタ・ディスプレイ・モジュールへの書き込みしか行わない場合、rw信号は常時書き込みを示すGNDへ接続しておくと、Arduinoからのrw用の信号線は不要です。LCDキャラクタ・ディスプレイ・モジュールとArduinoとの間は6本のディジタル・ポートだけで接続できます。8本のディジタル・ポートがほかの用途に利用できるようになります。
通常の利用ではLCDモジュールからの読み出しは行わないので、現在はこの方法でLCDキャラクタ・モジュールと接続しています。
●LCDのモジュールを組み立てる
LCDをセットするために次に示すように、LCDより少し大きめのユニバーサル基板に取り付け、リード線を引き出しArduinoの基板に差し込んでいます。
ここで示したのは、仮配線でArduino側を、次回にはコネクタを取り付けピンヘッダを利用して接続します。LCDには、LCD書き込みのサンプル・スケッチを動かし「hello, world」とArduinoから書き込まれたメッセージが表示されています。
●LCDをセットする基板
L型ピンヘッダを基板にはんだ付けして、コネクタで各信号をリード線で引き出します。半固定抵抗は10kΩで電源電圧を分割して、3番ピンの輝度調整の入力に接続します。
◆全体
◆バックライト部の配線
◆バックライト用電流制限抵抗とピンソケットのはんだ付け
反対側には、LCDに付属の2列14ピンのピンソケットをはんだ付けします。
◆Arduino用12ピンとLCD用14ピンの配線
●逆作用のピンセットが便利
配線をはんだ付けする時、リード線を逆作用ピンセットでクリップしておくと、はんだ付けのために基板を動かしてもリード線がずれません。
次に示すように、リード線をセットして基板を裏返してもリード線の先のはんだ付けする部分が所定の場所から動かないので、安心してはんだ付けできます。
配線を終えLCDをセットします。12ピンのコネクタを使用します。11、12番ピンは空けました。間違えて、逆挿ししても1(電源)、2番(GND)ピンのとが接続されないようにしてあります。3~5番ピンでRS、R/W、Eの制御信号線、7~10番ピンでD4~D7のデータ信号線、11番と12番ピンはNCで接続していません。
※はんだは旧来のスズ60%;鉛40%の有鉛はんだを使っています。現在購入するなら、融点が下がりフラックスの性能が上がった無鉛はんだを購入しましょう。500gとか1kgを購入すると、一生使えます。 |
●Arduinoに配線してサンプル・スケッチを動かす
ディジタル・ポート10にRS、9にR/W、8にEの各制御信号を接続します。ディジタル・ポート7番にD4、6番にD5、5番にD6、4番にD7のデータ信号線を接続します。
その接続状態をスケッチのLiquidCrystal()関数で指定し、lcdprint()関数でLCDにメッセージを表示します。
この接続状態では、サンプル・スケッチは次のようになります。
このサンプル・スケッチを実行すると最初に示したように、LCDにhello ,worldと表示されます。
次回、引き続きこのLCDへメッセージを表示する方法を検討します。
(2016/2/18 V1.0)
(2016/3/1 V1.1)LCD12ピンのピン番号を修正しました。
<神崎康宏>
バックグラウンド
L型ピンヘッダ;90度折れ曲がったピンヘッダです。右下はピンソケットです。