BASIC4MCU | 질문게시판 | 답변 : 아두이노 DHT-11 먼지센서 LCD
페이지 정보
작성자 master 작성일2018-06-18 11:09 조회7,468회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1955
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-18 오전 11:13:04// by Ok-Hyun Park//#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x3F,16,2); // 접근주소: 0x3F or 0x27//#include "DHT.h"#define DHTPIN 10 // DHT11이 연결된 핀#define DHTTYPE DHT11 // DHT 11,DHT시리즈중 11을 선택합니다.DHT dht(DHTPIN,DHTTYPE);//int dust_sensor=A0; // 미세먼지 핀 번호int rgb_R=5; // rgb 핀 빨간색 핀int rgb_G=6; // rgb핀 녹색 핀int rgb_B=7; // rgb핀 파란색 핀int piezo=3;//float dust_value=0; // 센서에서 입력 받은 미세먼지 값float dustDensityug=0; // ug/m^3 값을 계산int sensor_led=12; // 미세먼지 센서 안에 있는 적외선 led 핀 번호int sampling=280; // 적외선 led를 키고,센서 값을 읽어 들여 미세먼지를 측정하는 샘플링 시간int waiting=40;float stop_time=9680; // 센서를 구동하지 않는 시간//void setup(){Serial.begin(9600);pinMode(sensor_led,OUTPUT); // 미세먼지 적외선 ledpinMode(rgb_R,OUTPUT); pinMode(rgb_G,OUTPUT); pinMode(rgb_B,OUTPUT); // 3색 LEDpinMode(piezo,OUTPUT);lcd.init(); lcd.backlight();dht.begin();}//void loop(){float h=dht.readHumidity(); // 습도 측정float t=dht.readTemperature(); // 온도 측정//if(isnan(h)||isnan(t)){ // 오류 출력Serial.println("Failed to read from DHT sensor!");return;}float hic=dht.computeHeatIndex(t,h,false); // 보정된 섭씨//digitalWrite(sensor_led,LOW); delayMicroseconds(sampling ); // LED 켜기dust_value=analogRead(dust_sensor); delayMicroseconds(waiting ); // 센서 값 읽어오기digitalWrite(sensor_led,HIGH); delayMicroseconds(stop_time); // LED 끄기dustDensityug=(0.17*(dust_value*(5.0/1024))-0.1)*1000; // 미세먼지 값 계산//lcd.setCursor(0,0); lcd.print(h,0); lcd.print("% "); lcd.print(hic,0); lcd.print("*C "); // 1라인//lcd.setCursor(0,1); lcd.print(dustDensityug); // 2라인//if(dustDensityug<=30.0){ // 대기 중 미세먼지가 좋음 일 때 파란색 출력analogWrite(rgb_R,0); analogWrite(rgb_G,0); analogWrite(rgb_B,255); lcd.print("blue");} else if(30.0<dustDensityug&&dustDensityug<=80.0){ // 보통 녹색analogWrite(rgb_R,0); analogWrite(rgb_G,255); analogWrite(rgb_B,0); lcd.print("green");} else if(80.0<dustDensityug&&dustDensityug<=150.0){ // 나쁨 노란색analogWrite(rgb_R,255); analogWrite(rgb_G,155); analogWrite(rgb_B,0); lcd.print("yellow");digitalWrite(piezo,HIGH); delay(1000); digitalWrite(piezo,LOW); delay(1000);} else{ // 매우 나쁨 빨간색analogWrite(rgb_R,255); analogWrite(rgb_G,0); analogWrite(rgb_B,0); lcd.print("red");digitalWrite(piezo,HIGH); delay(1000); digitalWrite(piezo,LOW); delay(1000);}delay(2000);}
댓글 0
조회수 7,468등록된 댓글이 없습니다.