DHT11 온습도 모듈이 측정한 값을 16X2 매트릭스의 I2C 통신 기반의 LCD1602 표시장치에 출력해보자 DHT11은 써미스터와 정전식 습도센서가 내장되어있는 온습도센서이다. 써미스터는 온도의 변화에 따라 저항값이 변하는 소자이며, 정전식 습도센서는 습도의 변화에 따라 저항값이 변하는 소자이다.
DHT11 온습도 모듈로 측정한 온도와 습도를 표시장치에 출력하려면 DHT 센서 라이브러리가 필요하다.


#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTTYPE DHT11 // DHT11의 사용
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
lcd.init(); // LCD의 초기화
lcd.backlight(); // 백라이트 오픈
lcd.clear();
}
void loop() {
delay(3000);
float tem = dht.readTemperature();
float hum = dht.readHumidity();
// 센서값 읽기 실패 시 프로그램 종료
if (isnan(tem) || isnan(hum)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// 온도와 습도 값을 LCD 모듈에 출력
lcd.setCursor(1, 0);
lcd.print("Temp : ");
lcd.setCursor(8, 0);
lcd.print(tem, 1);
lcd.print(" C");
lcd.setCursor(1,1);
lcd.print("Humi : ");
lcd.setCursor(8, 1);
lcd.print(hum, 1);
lcd.print(" %");
// 온도와 습도 값을 시리얼 모니터에 출력
Serial.print("Temperature : ");
Serial.print(tem);
Serial.print(" ");
Serial.print("Humidity : ");
Serial.print(hum);
Serial.println("%");
}
DHT 센서가 표준값을 읽을 수 있도록 3초간 교정할 시간을 확보한다. 또 주변의 온도와 습도를 실수 형태로 측정하며 측정에 실패하였을 경우 오류 메시지를 출력하고 프로그램을 종료하도록 프로그램을 작성했다. 마지막으로 측정한 온도와 습도 값을 LCD에 적절한 위치에 표현할 수 있도록 명령어가 구성되었다.

