Arduino を液晶ディスプレイと繋ぐ

なにするの?

今回は、Arduino と 液晶ディスプレイ(LCD : Liquid crystal display)を繋いで前回取得した気温を表示できるようにしたいと思います。予算は ¥2000 弱(今回追加分のみ)です。

使用機材

これらの紹介は hinohika.hatenablog.com で行なっています。

  • 液晶ディスプレイ
    今回使用したディスプレイは、AMAZON では現在取り扱われていないようです。

www.amazon.co.jp

類似商品なら応用可能だと思いますが、保証はできません。すみません。

回路図

ブレッドボードを使って Arduino と気温センサー、液晶ディスプレイを次のように繋ぎます。 前回の配線で、同じピン名の列で空いている所に追加で線を差し込むイメージです。

f:id:etuetuetutan:20211017144414j:plain

ピン名と配線の色の対応は以下の通りです。

VCC GND SDA SCL
LCD-ブレッドボード間
Arduino-ブレッドボード間

作業

LCDはこんな感じです。欲張って4行、20文字表示のLCDを購入しました。

f:id:etuetuetutan:20211017144440j:plain

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

f:id:etuetuetutan:20211017144505j:plain

プログラムは、こんな感じです。

#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 で作業が必要になります。

  1. Arduino IDE で画面上に表示されているメニューバーから スケッチ > ライブラリをインクルード > ライブラリを管理 をクリック。

  2. ライブラリマネージャーが表示されるので、右上の検索バーに LiquidCrystal I2C と入力。

  3. 画像と同じライブラリを選択しインストールをクリック。

    f:id:etuetuetutan:20211002163452p:plain
    使用ライブラリ

これでライブラリを使用可能になります。

今回は、既存のライブラリを使用しただけなので、あまり解説できる内容はありませが少しだけ。

double get_temperature(int addr){
....
}

は、前回の内容で、気温を取得する部分を関数として用意し、それを使用しています。

lcd.setCursor(0, 0)

で左から何文字目、上から何行目に表示するか指定できます。

プログラムを Arduino に書き込むと、、、表示されました!!

f:id:etuetuetutan:20211017144313j:plain

今回は表示するだけでしたが、単に表示するだけでなく、文字を動かしてみるのも面白いですね!

次回は、新たに ESP32 というマイコンを使っていきます。無線wi-fi モジュールがついており、 IoT に近づきます!!