https://catch-sin.tistory.com/10
이전 포스팅에서는 PMV를 계산하고 PMV를 출력하는 과정까지 진행해보았습니다.
이번 포스팅에서는 PMV(쾌적성 지표)에 따라 LED에 빛이 들어오고 부저가 울리는 코딩을 진행해보려고 합니다.
우선 회로는 다음과 같습니다.
여기서 사용된 저항은 220옴입니다.
회로를 구성하셨으면 의문점이 들 수 있습니다.
기존에 DHT11은 2번에다 연결했는데 저렇게 연결하면 어떡해?
해결방법은 간단합니다.
DHT11의 위치를 옮겨주면 됩니다. 저는 2번에서 A0로 핀의 위치를 변경하였습니다.
이번에는 코딩 먼저 보여드리려고 합니다. 코드는 다음과 같습니다. |
#include <DFRobot_DHT11.h> DFRobot_DHT11 DHT; #define DHT11_PIN A0 //편의상 2번에서 A0로 핀을 변경하였습니다. //LED변수 정의 과정 int Led1 = 2; int Led2 = 3; int Led3 = 4; int Led4 = 5; int Led5 = 6; int Led6 = 7; int Led7 = 8; int Led8 = 9; int Led9 = 10; //부저 변수 정의 과정 int melody[] = {500}; //LED 점등 패턴 - 전체 다 끄기 void style_0(void) { unsigned char j; for(j=2;j<=10;j++) digitalWrite(j,LOW); } //점등패턴 1번 2,3,4번 켜기 void style_1(void) { unsigned char j; for(j=2;j<=4;j++) digitalWrite(j,HIGH); delay(200); } //점등패턴 2번 5,6,7번 켜기 void style_2(void) { unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,HIGH); delay(200); } //점등패턴 3번 8,9,10번 켜기 void style_3(void) { unsigned char j; for(j=8;j<=10;j++) digitalWrite(j,HIGH); delay(200); } void setup(){ Serial.begin(115200); } void loop(){ DHT.read(DHT11_PIN); //계산부 float ps = 6.112*exp(17.62*DHT.temperature/(243.12+DHT.temperature)); float fp = 1.0016 + 3.15*pow(10,-6)*760 - 0.074/760; float pm = fp*ps; float pa = DHT.humidity*pm; float fcl = 1.0903; float icl = 0.07; float hc = 4.3; float tcl=0.0008144*pow(DHT.temperature,2)+0.3488*DHT.temperature+21.24; float M = 58.2; float H = 3.96*pow(10,-8)*fcl*(pow((tcl+273),4)-pow((DHT.temperature+273),4))+fcl*hc*(tcl-DHT.temperature); float Ec = 3.05*pow(10,-3)*(5733-6.99*M-pa)-0.42*(M-58.15); float C = 0.0014*M*(34-DHT.temperature); float Er = 1.7*pow(10,-5)*M*(5867-pa); float PMV = (0.303*exp(-0.036*M)+0.028)*(M-H-Ec-C-Er); //출력부 Serial.print("온도:"); Serial.print(DHT.temperature); Serial.print("*C"); Serial.print(" 습도:"); Serial.print(DHT.humidity); Serial.println("%"); Serial.print("PMV : "); Serial.println(PMV); Serial.println(); Serial.println(); //PMV에 따라 전등과 부저 출력 if(PMV>=2){ style_0(); tone(11,melody,1000); style_3(); } else if(PMV>=1){ style_0(); tone(11,melody,250); style_2(); } else if(PMV<=-1){ style_0(); tone(11,melody,250); style_2(); } else if(PMV<=-2){ style_0(); tone(11,melody,1000); style_3(); } else { style_0(); style_1(); } delay(1000); } |
회로 구성은
변수 선언 - 패턴 구성 - if문 구성 으로 요약할 수 있습니다.
제가 원하고자 하는 바는 PMV에 따라 전등이 켜지고 꺼지는 상황이었기 때문에 if 구문을 사용했습니다.
결과는 다음과 같이 나옵니다.
부저의 소리와 LED 변화를 통해 시각 청각적으로 인식할 수 있도록 구성하였습니다.
다음포스팅에서는 블루투스를 이용한 온습도 측정을 휴대폰으로 확인할 수 있는 방법을 포스팅하도록 하겠습니다.
'아두이노' 카테고리의 다른 글
[아두이노]조도센서를 이용한 회로구성과 조도값으로 변환 (2) | 2022.10.21 |
---|---|
[아두이노]MIT App Inventor(앱인벤터) 오류 해결방법 (feat.HC06) (0) | 2022.05.25 |
[아두이노]온습도 휴대폰 출력(HC06, DHT11이용) (0) | 2022.05.25 |
[아두이노]온습도 측정(DHT11)을 통해 PMV(쾌적성 지표) 계산하기 [2편] (2) | 2022.05.24 |
[아두이노]온습도 측정 결과값 도출하기.(DHT11센서 이용)[1편] (3) | 2022.05.24 |