LCDモジュールをArduinoで動かします。
目次:
今回の目的
ELEGOOのチュートリアル「LCD Display」をチュートリアル通りに動かします。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
LCDモジュール
今回扱う「LCD1602モジュール」、これは1602(16文字×2行)のキャラクターディスプレイタイプのLCD(Liquid Crystal Display)です。
表面には青いLCD。バックライトで白文字を表示させることができるようです。
リード端子は16本。端子のシルクは1ピンから順に「VSS」、「VDD」、「VO」、「RS」、「RW」、「E」、「D0」~「D7」、「A」、「K」。パラレル通信を使うため本数が多くなっております。なおネット上でLCDを探すと見た目そっくりながら、シリアル通信用のものがあったりするので購入時は要注意です。
裏面には「1602A」と「QAPASS」のシルク文字があります。「1602A」は1602(16文字×2行)を込めた型式でしょうが、「QAPASS」が何なのかは見つかりませんでした。
器材接続
LCD1602モジュールの端子を一部ブレッドボード経由させてArduinoに繋ぎました。
チュートリアルではモジュールのピンヘッダをブレッドボードに挿すようですが、固くて挿し込むことができませんでした。ネット上で他所を見てもブレッドボードに挿せているようでしたので、ばらつきの問題かもしれません。
ブレッドボードに挿した可変抵抗(10kΩ)で、モジュールの「VO」にVDD(5V)-VSS(0V)間を分圧した電圧を与えてLCD表示のコントラストを調整します。
ArduinoのUSBはパソコン、もしくはバッテリーに接続して電源供給させます。
スケッチ
以下スケッチです。
#include<LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12); // LiquidCrystal型の変数「lcd」を定義
void setup() {
lcd.begin(16,2); // LCDの表示行列数設定
lcd.print("Hello,World!"); // 「Hello,World!」を表示
}
void loop() { // 以下延々と繰り返す
lcd.setCursor(0,1); // 表示開始位置設定
lcd.print(millis() / 1000); // リセット後の秒数を表示
}
標準ライブラリ「LiquidCrystal」を活用したスケッチです。このライブラリはHitachi HD44780とその互換チップセットをベースにしたLCDの制御に対応しているようです。
スケッチ本文の中でLiquidCrystal型変数「lcd」を定義し、それに対して次のような関数を実行しております。
begin(cols, rows)
ディスプレイの桁数、行数を指定
cols:桁数
rows:行数
print(data)
文字をLCDに出力
data:表示する文字
setCursor(col, row)
カーソル位置を指定。その位置からテキスト表示される。
col:数
row:行
ライブラリの中身は読み解けませんでした。モジュールに対してタイミングチャートに則って個々の信号を入力しているはずなのですが。それをこんな短い本文で制御できるようにしているのですから便利なライブラリだと感心すると共に、わからないままにしてしまう自分に焦りも感じます。
動作
スケッチを書き込み、可変抵抗を調整。表示が見えました。
上の行で「Hello, World!」の表示は固定のまま、下の行で秒数が繰り上がっていきます。
所感
ライブラリの中身を気にしなければ、スケッチは短くわかり易いものです。ライブラリやらモジュールの詳細を紐解くのは置いておいて、先に進みます。
0 件のコメント:
コメントを投稿