記事  TOPに戻る

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桁のキャラクタ・ディスプレイとして電子工作によく使われます。

lcd01.png
 
 背面です。

lcd02.png
 
 右側にある14ピンはデータの信号線、データのやり取りの制御信号と電源用です。左側にはLCDのバックライトの電源供給用端子が用意されています。
 右側の信号線などは、次に示すように7×2の14ピンのヘッダをはんだ付けするようになっています。このダブルのピンヘッダはそのままではブレッドボードには利用できません。そのためケーブルで信号線などを引き出し、ケーブルのもう一方をブレッドボードに接続できるようにします。

lcd03a.png
 

LCDキャラクタ・ディスプレイ・モジュールはバラエティに富んでいる
 このタイプのLCDキャラクタ・ディスプレイ・モジュールは種類が多く、

  • 小型化されブレッドボードに挿し込んでテストすることができるもの
  • 8文字2行表示とより小型化され安価になったもの

があります。電源電圧も5V電源のほかに、最近多くなった電源電圧3.3VのArduinoなどと直接接続することができる3.3V駆動の製品も販売されています。

 今回使っているのはArduino Unoなので、電源電圧は5Vに対応した製品を選んでいます。

 形状、駆動電圧はバラエティに富んでいますが、Arduinoとのインターフェースとなる信号線などの役割はみな共通で、次のようになります。

Arduinoとのインターフェース

image007-9be6652d.jpg
 
 この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の基板に差し込んでいます。

lcd04.png

 ここで示したのは、仮配線でArduino側を、次回にはコネクタを取り付けピンヘッダを利用して接続します。LCDには、LCD書き込みのサンプル・スケッチを動かし「hello, world」とArduinoから書き込まれたメッセージが表示されています。

LCDをセットする基板
 L型ピンヘッダを基板にはんだ付けして、コネクタで各信号をリード線で引き出します。半固定抵抗は10kΩで電源電圧を分割して、3番ピンの輝度調整の入力に接続します。

◆全体

lcd05a.png

◆バックライト部の配線

LCD-kido3.png

◆バックライト用電流制限抵抗とピンソケットのはんだ付け

LCD21a.png 反対側には、LCDに付属の2列14ピンのピンソケットをはんだ付けします。

◆Arduino用12ピンとLCD用14ピンの配線

lcd01d.png

逆作用のピンセットが便利
 配線をはんだ付けする時、リード線を逆作用ピンセットでクリップしておくと、はんだ付けのために基板を動かしてもリード線がずれません。

lcd06.png

 次に示すように、リード線をセットして基板を裏返してもリード線の先のはんだ付けする部分が所定の場所から動かないので、安心してはんだ付けできます。

lcd07.png

 配線を終えLCDをセットします。12ピンのコネクタを使用します。11、12番ピンは空けました。間違えて、逆挿ししても1(電源)、2番(GND)ピンのとが接続されないようにしてあります。3~5番ピンでRS、R/W、Eの制御信号線、7~10番ピンでD4~D7のデータ信号線、11番と12番ピンはNCで接続していません。

12pin-c.png

lcd08.png

※はんだは旧来のスズ60%;鉛40%の有鉛はんだを使っています。現在購入するなら、融点が下がりフラックスの性能が上がった無鉛はんだを購入しましょう。500gとか1kgを購入すると、一生使えます。

Arduinoに配線してサンプル・スケッチを動かす
 ディジタル・ポート10にRS、9にR/W、8にEの各制御信号を接続します。ディジタル・ポート7番にD4、6番にD5、5番にD6、4番にD7のデータ信号線を接続します。

LCD02d.png
 その接続状態をスケッチのLiquidCrystal()関数で指定し、lcdprint()関数でLCDにメッセージを表示します。
 この接続状態では、サンプル・スケッチは次のようになります。

lcd09a.png

 このサンプル・スケッチを実行すると最初に示したように、LCDにhello ,worldと表示されます。
 次回、引き続きこのLCDへメッセージを表示する方法を検討します。

(2016/2/18 V1.0)

(2016/3/1 V1.1)LCD12ピンのピン番号を修正しました。

<神崎康宏>

バックグラウンド

L型ピンヘッダ;90度折れ曲がったピンヘッダです。右下はピンソケットです。

pin2.png

連載メニュー 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バス双方向電圧レベル変換モジュール