아두이노2016. 8. 4. 08:00

조금 전 포스팅한 OLED 디스플레이와 DHT11 센서를 이용한 온습도계를 개선해 보았다. 글자가 너무 작아서 잘 안보이길래 텍스트 크기를 크게 했으며 (벌써 노안인가? ㅠㅠ) 기상청에서 퍼온 불쾌지수 구하는 공식을 활용하여 온도, 습도, 불쾌지수가 표시되게 하였다. 불쾌지수는 온도와 습도로 구할 수 있다. 불쾌지수 (Discomfort Index) 가 80을 넘으면 대부분의 사람이 불쾌감을 느끼게 되며 실제로도 80이 넘으면 폭력, 살인 등 강력사건이 늘어난다고 한다. 


아두이노와 센서, OLED 디스플레이의 연결은 바로 전 포스팅과 같으며 소스만 수정이 되었다. 그러므로 소스 이외의 사항은 아래의 글을 참고하면 된다.




■ 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//** http://deneb21.tistory.com/431
 
#include <DHT11.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
//DHT11 연결핀
#define DHT11_PIN   2
DHT11 dht11(DHT11_PIN);
 
//Software SPI 연결핀 설정
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
 
void setup() {
    display.begin();
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
}
 
void loop() {
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0//온도, 습도 읽어와서 표시
  {
    display.setCursor(0,0);
    display.print("T : ");
    display.println(temp,0);
    display.print("H : ");
    display.println(humi,0);
    display.print("D : ");
    display.println(discomfortIndex(temp,humi),0);
    display.display();
  }
  else                                //에러일 경우 처리
  {
    display.setCursor(0,0);
    display.print("Error :");
    display.print(err);
    display.display();
  }
  delay(5000);                        //5초마다 측정
  display.clearDisplay();
}
 
//불쾌지수 구하기 (공식출처: 기상청)
float discomfortIndex(float temp, float humi) {
    return (1.8f*temp)-(0.55*(1-humi/100.0f)*(1.8f*temp-26))+32;
}
cs



소스를 보면 display.setTextSize(1) 에서 display.setTextSize(2) 로 텍스트 크기를 1 증가 시켰으며 discomfortindex() 함수를 추가해서 불쾌지수를 표시해 주도록 하였다. 그리고 의미 없는 온도와 습도의 소수점 이하 자리를 잘라 버렸다.



 

개선 전



개선 후... 위로 부터 온도(T), 습도(H), 불쾌지수(D) 표시


훨씬 잘 보인다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요