BASIC4MCU | 질문게시판 | 답변 : 답변 : 질문드립니다.푸린~~
페이지 정보
작성자 푸린 작성일2018-06-17 17:08 조회4,701회 댓글1건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-06-17 오후 3:13:19
// by Ok-Hyun Park
//#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // 접근주소: 0x3F or 0x27
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); // 미세먼지 적외선 led
pinMode(rgb_R,OUTPUT); pinMode(rgb_G,OUTPUT); pinMode(rgb_B,OUTPUT); // 3색 LED
pinMode(piezo,OUTPUT);
lcd.init(); lcd.backlight();
}
//
void loop(){
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(dustDensityug); // 1라인
//
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);
}
DHT-11 온습도 센서를 쓸것입니다. 그래서 현재 온도와 습도의 값이 미세먼지 수치와같이 LCD화면에 출력되게 할려고 합니다. 지금까지 저의 구상은 이러한데 온습도 센서를 이용해서 더 추가할수있는 기능이 혹시 있을지 그것도 여쭈어 봅니다.
댓글 1
조회수 4,701master님의 댓글
master 작성일
온습도를 LCD에 출력하는 것은 어렵지 않습니다.
온습도 센서 예제를 먼저 구동해보세요
//
온습와 습도를 이용해서 창문을 열고 닫을 수도 있습니다만
먼지농도/ 온도/ 습도/ 이 세가지 조건을 놓고서 디테일하게 조건식을 작성하셔야지 제대로 동작합니다.