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で遊んでみた軌跡を以下でまとめてます。