Arduinoで温湿度を取得しLCDに表示する

たまたま手元にあったElegooのキットに含まれていたDHT11とLCDを使って、温湿度を測定しLCDに表示させようと思います。

配線図

Elegooのキットに入っていたのは3ピンになっていたので、微妙に違いますが、こんな感じで配線しています。あと実際に使ったのはArduino UNOではなく、ELEGOO UNO R3。プルアップが必要かどうか、よく分かりませんでしたが、Elegooのキット付属の説明書には、含まれていなかったので、含めていません。

aruduino_dht11_lcd

スケッチ

DHT11を使うために、DHT sensor libraryと、LCDを使うためにLiquidCrystalを使います。DHT sensor libraryはインストールされていなかったので、ライブラリをインクルード » ライブラリを管理 から追加しました。

本当は温度の表示をCではなく°Cとさせたかったのですが、文字化けするため、断念。

#include <DHT.h>
#include <DHT_U.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const int PIN_DHT = 2;
DHT dht(PIN_DHT, DHT11);

void setup() {
  // Set up LCD
  lcd.begin(16, 2);

  // Set up DTH11
  dht.begin();
}

void loop() {
  // Read temp and humi by DTH11
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Display to LCD
  lcd.setCursor(0, 0);
  lcd.print("Temp:        C  "); 
  lcd.setCursor(6, 0);
  lcd.print(String(temperature, 2));

  lcd.setCursor(0, 1);
  lcd.print("Humi:        %");
  lcd.setCursor(6, 1);
  lcd.print(String(humidity, 2));

  // Need to wait a few seconds
  delay(2000);
}

See Also