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 に近づきます!!