【Arduino入門】LCD(液晶ディスプレイ)に文字を表示しよう

Arduinoを使って、LCD(1602A)に文字を表示するプログラミングする方法を学習します。

動画で学習する

チャンネル登録してね!

LCDとは?

LCDは、Liquid Crystal Displayの略で、日本語でいうと液晶ディスプレイのことです。

ブレットボードで接続

ブレッドボードで組むとこのような感じです。

Arduinoは、入門書などで一番メジャーな、Arduino UNOを使います。
厳密にいうと、互換ボードです。

LCDの型番は1602Aです。

Amazonでベストセラーになっている、elegoo(エレゴ)のスターターキットに入っていた、LCDです。
キットを買ってしまえば、何も考えなくても、検証するためのいろいろなパーツが揃うので便利です。

16文字を2行表示できます。

操作メニューを表示したり、センサーから取得をした値を出力するなど、色々な使い方ができそうです。

LCD 1602AのPINアサイン

これらのPINを利用します。

  • VSS・・・グランドピン
  • VDD・・・+5V付与
  • VO・・・LCDのコントラストを調整するためのピン
  • RSとRWとE・・・Arduinoと、LCD間の通信の制御
  • D4〜D7の4本・・・実際のデータの受け渡し
  • AとK・・・LEDバックライトを制御するための端子です。

接続図

接続図を起こすと、このようになります。

ArduinoとLCDによるHello Worldプログラミング

それでは、Hello Word!と表示するプログラムを、実行してみましょう。

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello, World!");
}

void loop() {

}

簡単なコードの説明ですが、
includeで、このLCDを操作するために、ライブラリを読み込みます。
Arduinoのどのピンをディスプレイのどのピンに接続するかを定義します。
第1引数が、LCDのRSピンに接続するArduino側のピン番号
第2引数が、LCDのRWピンに接続するArduino側のピン番号
第3〜第6引数が、dataピンに接続するArduino側のピン番号

setup関数は、プログラム実行時に1回呼び出されます。

lcd.begin関数で LCDの列と行の数を設定します。
16文字、2行を設定します。

lcd.print関数で「Hello, World!」とLCDにメッセージを出力します。

プログラムをマイコンボードに書き込み、
1行目に、Hello. World!と表示されればOKです。

また、ボリューム抵抗で、コントラストを調整できます。

表示位置を2行目にするには、

lcd.setCursor関数を使います。

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 1);
  lcd.print("Hello, World!");
}

void loop() {
}

2行目に表示されました。

尚、lcd.setCursor関数の、
第2引数に0を指定すると、1行目、
第2引数に1を指定すると、2行目に表示されます。

列の表示位置の指定

あと、列の表示位置、
言い換えると、横方向の表示位置を調整するには、
第一引数をのパラメーター調整します。

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(2, 1);
  lcd.print("Hello, world!");
}

void loop() {
}

3列目から表示されるようになりました。

動的に表示内容を変更する

setup関数は1回しか呼ばれませんが、
loop関数を使うことで随時、表示内容を変えることもできます。

たとえば、プログラムを起動してからの、秒数をLCDに表示してみましょう。

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(2, 1);
  lcd.print("Hello, world!");
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print(millis() / 1000);
}

プログラムの実行を開始した時から現在までの時間をミリ秒単位で返す関数です。
割る1000で、秒に変換しています。

実行すると、秒数をカウントアップするようになります。

おわりに

Arduinoを触ってみたら、すごい面白いなと思いました。
検証を積み重ねていけば、実用的な製品も作れそうですし、プログラミング学習にも使えそうです。

ぜひ、パラメータを変えたりしながら、動作を検証してみてください。

参考文献

LiquidCrystal | Arduino

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

プログラミング入門ナビ編集部

Share
Published by
プログラミング入門ナビ編集部