ArduinoでDHT11モジュール+LCDを使って温湿度計をつくる
前回はDHT11のモジュールを使ってPCのシリアルポート上に温度、湿度を表示させた。今回はシリアルポートではなく、ArduinoにLCD(液晶ディスプレイ)を接続し、DHT11で取得した温度、湿度をLCDに表示させて温湿度計を作ってみたいと思う。
開発環境
Arduino Uno R3
Windows 10(開発用PC)
Arduino IDE 1.8.19
ブレッドボードに回路をつくる
今回は以下のようにブレッドボード上に回路を組んだ。前回のDHT11の回路は変わっておらず、LCDの接続を追加しただけ。
以下が実際に繋いでみた写真。これで準備完了。
温度と湿度をLCDに表示するプログラム
今回は以下のようにコードを書いた。
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
dht.begin();
lcd.init();
lcd.backlight();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read"));
return;
}
lcd.setCursor(0,0);
lcd.print("Humidity:");
lcd.print((int) h);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temperature:");
lcd.print((int) t);
lcd.print("\xdf");
lcd.print("C");
}
基本的には、すでに以下の記事でやったDHT11で温度&湿度を取得するコードと、LCDに文字を表示するコードを組み合わせただけ。
Arduino UNO R3で遊ぼう日記 その3:Arduino + LiquidCrystalでLCD1602 + I2Cモジュールを使う
Arduino UNO R3で遊ぼう日記 その5:DHT11モジュールを使って湿度と温度を取得する
一点補足しておくと、温度の記号(℃)はそのままコード上に書いても表示できないので、16進数の℃の文字コードDFを「\xdf」で指定している。
※別の文字コードを使うときは\xの後に使いたい文字コードを指定する
あとはいつも通りコードをコンパイルしてArduinoに書き込めばOK。以下が温度と湿度を表示してみた写真。今回はPCから給電しているが、電源をDC電源などに変えてやればArduino単体でも温湿度計として使える。
これでDHT11を使ってやりたいことは大体できたので、次回からまた違う部品を使って遊んでみたいと思う。
日記まとめ
Arduinoで遊んでみた軌跡を以下でまとめてます。




