아두이노와 습도센서를 사용하여 LCD에 온습도 값을 표시하는 방법입니다.
※ 준비물
- 아두이노 우노
- 1602LCD
- DHT11 습도센서
- 220Ω 저항 1EA
- 10KΩ 저항 1EA
- 가변저항 1EA (LCD 폰트 밝기조절)
- 점퍼 와이어
--> 아래 회로도에서 DHT11 좌측 1,2번 핀 사이를 10KΩ 저항으로 연결해주세요 (VCC, Signal)
-
※아두이노 코드
#include <DHT11.h> //DHT11 헤 호출
#include <LiquidCrystal.h> //1602LCD 헤더 호출
LiquidCrystal lcd(12, 11, ,5, 4, 3, 2);
int pin=8; // DHT11 Signal 연결 핀번호
DHT11 dht11(pin); // NTC temp.measurement component
// (Negative Temperature Coefficient)
void setup()
{
lcd.begin(16, 2); // LCD의 열행 선언
pinMode(4, OUTPUT); //Motor 출력
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
/* 위 if문과 같은코드
int err=dht11.read(humi, temp);
if(err==0)
센서에서 정삭적으로 값을 읽어왔을때 실행, 함수는 리턴값을 가직수 있으며dht11.read() 함수는 센서의 리딩값이 아닌 상태값을 가져오는 함수로 이 값을 err 변수에 저장후 0이면 정상 그외는 비정상코드를 실행, 정상일때 0을 반환하며 checksum 에러는 -1, 타임아웃은 2를 반환
*/
{
lcd.setCursor(0, 0); // LCD 출력위치
lcd.print("temperature:"); // "temperature" 텍스트 출력
lcd.print(temp); // 온도값 출력
lcd.println(); // 한칸 줄바꿈(ln에서 l = 소문자L )
lcd.setCursor(0, 1); // LCD 출력위치
lcd.print("humidity:"); // "humidity" 텍스트 출력
lcd.print(humi); // 습도값 출력
}
else // err변수에 0이 담기지 않을 경우
{
lcd.clear(); // LCD 화면 비우기
lcd.setCursor(0, 0); // LCD 출력위치
lcd.println(); //줄 바꿈 (엔터)
lcd.print("Error No :"); // "Error No :" 텍스트 출력
lcd.print(err); // err 출력
lcd.println(); //줄 바꿈 (엔터)
}
}
1602 LCD에 1행에 온도가, 2행에 습도가 표시되는것을 확인할 수 있습니다.