Arduino を液晶ディスプレイと繋ぐ
なにするの?
今回は、Arduino と 液晶ディスプレイ(LCD : Liquid crystal display)を繋いで前回取得した気温を表示できるようにしたいと思います。予算は ¥2000 弱(今回追加分のみ)です。
使用機材
これらの紹介は hinohika.hatenablog.com で行なっています。
- 液晶ディスプレイ
今回使用したディスプレイは、AMAZON では現在取り扱われていないようです。
類似商品なら応用可能だと思いますが、保証はできません。すみません。
- ケーブル
Arduino をはじめようキットに付属の オスーオス のケーブルだけでなく、オスーメス のケーブルも必要になったので購入しました。こんなに必要ないかもしれませんが、、笑
回路図
ブレッドボードを使って Arduino と気温センサー、液晶ディスプレイを次のように繋ぎます。 前回の配線で、同じピン名の列で空いている所に追加で線を差し込むイメージです。

ピン名と配線の色の対応は以下の通りです。
| VCC | GND | SDA | SCL | |
|---|---|---|---|---|
| LCD-ブレッドボード間 | 赤 | 茶 | 橙 | 黄 |
| Arduino-ブレッドボード間 | 赤 | 黒 | 白 | 茶 |
作業
LCDはこんな感じです。欲張って4行、20文字表示のLCDを購入しました。

裏はコントローラーがつけられています。ピン名をかいてくれているので配線は楽ですね。

プログラムは、こんな感じです。
#include <LiquidCrystal_I2C.h>
#define LCD_COLS 20
#define LM75B_ADDR 0x48
// LCDの情報 (アドレス、一行の文字数、表示列数)
LiquidCrystal_I2C lcd(0x27, LCD_COLS, 4);
double get_temperature(int addr){
signed int message;
double temp;
Wire.requestFrom(addr,2);
message = (Wire.read() << 8);
message |= Wire.read();
temp = ((message >> 5) & 0x3FF) * 0.125;
return temp;
}
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
// 表示する位置の指定 (列、行)
lcd.setCursor(0, 0);
lcd.print("Room Temperature");
Wire.begin();
}
void loop() {
// put your main code here, to run repeatedly:
double temp;
temp = get_temperature(LM75B_ADDR);
// 表示する位置の指定 (列、行)
lcd.setCursor(0,2);
lcd.print(temp);
delay(5000);
}
今回は、LiquidCrystal_I2C.h というライブラリを使用します。
少し Arduino IDE で作業が必要になります。
Arduino IDE で画面上に表示されているメニューバーから スケッチ > ライブラリをインクルード > ライブラリを管理 をクリック。
ライブラリマネージャーが表示されるので、右上の検索バーに LiquidCrystal I2C と入力。
画像と同じライブラリを選択しインストールをクリック。

使用ライブラリ
これでライブラリを使用可能になります。
今回は、既存のライブラリを使用しただけなので、あまり解説できる内容はありませが少しだけ。
double get_temperature(int addr){
....
}
は、前回の内容で、気温を取得する部分を関数として用意し、それを使用しています。
lcd.setCursor(0, 0)
で左から何文字目、上から何行目に表示するか指定できます。
プログラムを Arduino に書き込むと、、、表示されました!!

今回は表示するだけでしたが、単に表示するだけでなく、文字を動かしてみるのも面白いですね!
次回は、新たに ESP32 というマイコンを使っていきます。無線wi-fi モジュールがついており、 IoT に近づきます!!
