본문 바로가기

아두이노 LCD와 온습도센서로 불쾌지수 표현하기

반응형

이번에는 LCD(16*2)와 저번에 소개했던 DHT11 온습도 센서로 불쾌지수를 측정 해보기로 했다.



http://www.kma.go.kr/HELP/basic/help_01_05.jsp


위의 사이트에 온도와 상대습도로 불쾌지수를 산출해주는 공식이 나와있다.


위의 공식에 온도와 습도(%)를 대입하면 불쾌지수가 나온다.


이번에는 아두이노 나노를 사용하겠다.




위의 i2c변화기를 lcd에 납땝하여 사용한다.


GND는 GND

VCC는 5v

SDA는 A4

SCL는 A5


왼쪽은 i2c 오른쪽은 아두이노로


위와 같이 연결하면된다.



온습도센서의 Vcc는 아두이노 5V

GND는 아두이노 GND

DATA핀은 아두이노2번핀에 연결한다.


LiquidCrystal_I2C1602V1.zip

DHT11_library.zip


위의 2개의 파일을 다운 받은후 라이브러리를 추가하자






추가후 아래의 코드를 복사 & 붙이기 해서 업로드해보자


/////////////////////////////////////////////////////////////////////

//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT11.h>

DHT11 dht11(2);
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x20 for a 16 chars and 2 line display

int calculate(int, int);

void setup()
{
  lcd.init();                      // initialize the lcd

  // Print a message to the LCD.
  lcd.backlight();
}
char d[] = {"Discomfort index"};
char state[4][5] = {
  {"Great"},
  {"Good "},
  {"Soso "},
  {"Bad  "}
};
int s;
void loop()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  for (int i = 0; i < 16; i++)
    lcd.print(d[i]);
  int err;
  float temp, humi;
  lcd.setCursor(0, 1);
  if ((err = dht11.read(humi, temp)) == 0) {
    lcd.print(':');
    lcd.print(calculate(temp, humi / 100));
    lcd.print(calculate(temp, humi / 100) % 10);
    if (calculate(temp, humi / 100) < 68) s = 0;
    else if (calculate(temp, humi / 100) < 75) s = 1;
    else if (calculate(temp, humi / 100) < 80) s = 2;
    else s = 3;
  }
  lcd.setCursor(6, 1);
  for (int i = 0; i < 5; i++)
    lcd.print(state[s][i]);
  delay(DHT11_RETRY_DELAY);
}

int calculate(int t, int rh) {
  int i = (9 / 5) * t - 0.55 * (1 - rh) * ((9 / 5) * t - 26) + 32;
  return i;
}

//////////////////////////////////////////////////////////////




원래 lcd.print를 하면 문자열도 가능하지만

이상하게 문자열의 첫글자만 나와서 코드가 복잡해진 것이니 어쩔수없다.





업로드후 아두이노를 살펴보면


Discomfort index

:지수    상태


의 형태로 나와야 정상이다.


지수는 말그대로 불쾌지수이고

상태는 본문 처음에 나와있던 사이트의 상태를 적용해본 것이다.




지금은 불쾌지수가 54이므로 쾌적한 상태이다.





반응형

'아두이노' 카테고리의 다른 글

아두이노 RFID 모듈 사용(RFID RC522)  (0) 2016.12.23
아두이노 릴리패드  (0) 2016.11.05
3색 LED띠  (0) 2016.10.30
FTDI 5v에서 3.3v로 바꾸는 방법(차이점)  (0) 2016.10.27
아두이노 드론 프로그래밍  (0) 2016.10.24