아두이노프로세싱 프로그래밍

아두이노 DHT11 온습도 측정기 I2C인터페이스 1602 lcd 출력

coding art 2017. 12. 15. 19:20
728x90
 
                                           

 

 

I2C 인터페이스 방식의 1602 lcd 판넬은 와이어링 점퍼선 사용량을 거의 50% 이하로 줄일 수 있어 DHT11 온습도 측정기를 만들 때에도 큰 도움이 된다. DHT11 온습도 측정 핀은 아두이노 디지털 데이터 핀 6번에 연결하도록 한다.

 

I2C lcd 배선은 그림을 참조하자.

SCL->A5

SDA->A4

GND->GND, 0V

Vcc->5V

 

A5,A4 I2C 배선은 아두이노 보드의 Digital I/O pins 의 좌측 끝 부분에 SCL, SDA 핀이 있으므로 여기에 배선해도 무방하다. 이러한 I2C 인터페이스 방식을 사용하면 lcd 가 사용하던 데이터 핀 4개를 생략할 수 있어 배선이 대폭 줄어드는 이점이 있다.

 

일단 setup()에서 Hello World!를 출력하고 5초간 숨고를 여유를 준 다음 loop()문에서 온습도 데이터를 2줄에 출력한다.

 

 

 

lcd_DHT11_i2c_01

 

#include <DHT11.h>   
//#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

int pin= 6;           

DHT11 dht11(pin); 
LiquidCrystal_I2C lcd(0x3F,16,2);
     
void setup()  {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  delay(5000);
  lcd.clear();
}
 
void loop()  {
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0) {
    lcd.setCursor(0,0);
    lcd.print("temp:");
    int t = temp;
    lcd.print(t);
    lcd.print(" C deg");

    lcd.setCursor(0,1);
    lcd.print("humidity:");
    int h = humi;
    lcd.print(h);
    lcd.print(" %   ");
    lcd.println();
  }
  else  {
    lcd.println();
    lcd.print("Error No :");
    lcd.print(err);
    lcd.println();   
  }
  delay(20000);      
}//끝