BASIC4MCU | 질문게시판 | 답변 : 아두이노 미세먼지 센서 측정기 소스 질문
페이지 정보
작성자 master 작성일2018-07-10 09:29 조회4,917회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5629
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-07-10 오전 9:27:21// by Ok-Hyun Park//lcd값이(미세먼지 농도) 마이너스로 출력되고숫자가 계속 변합니다led 색상이 파란색과 빨간색이 합쳐지지 않고 나타납니다 ㅠ//#include <LiquidCrystal.h>const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;LiquidCrystal lcd(rs,en,d4,d5,d6,d7);//int sensor_led=12,dust_sensor=A0; // 미세먼지int rgb_red=5,rgb_green=6,rgb_blue=7; // rgb//float dust_value=0;float dustDensityug=0; // ug/m^3 값을 계산float calcVoltage=0;int sampling=280,waiting=40,stop_time=9680;//void setup(){pinMode(sensor_led,OUTPUT); // 미세먼지//pinMode(4,OUTPUT);//pinMode(rgb_red,OUTPUT); pinMode(rgb_green,OUTPUT); pinMode(rgb_blue,OUTPUT);//lcd.begin(16,2); lcd.print("Dust Density");Serial.begin(9600);}//void loop(){digitalWrite(sensor_led,LOW); delayMicroseconds(sampling); // LED 켜기dust_value=analogRead(dust_sensor); delayMicroseconds(waiting); // 센서 값 읽어오기digitalWrite(sensor_led,HIGH); delayMicroseconds(stop_time); // LED 끄기Serial.print("Raw Signal Value(0-1023): "); Serial.print(dust_value);//calcVoltage=dust_value*(3.3/1023.0);Serial.print("-Voltage: "); Serial.print(calcVoltage);//dustDensityug=(0.17*calcVoltage-0.1)*1000;Serial.print("Dust Density:"); Serial.print(dustDensityug); Serial.println("[ug/m3]");lcd.setCursor(0,1); lcd.print(dustDensityug); lcd.print("[ug/m3]");//if(dustDensityug<=30.0){ // 대기 중 미세먼지가 좋음 일 때 파란색 출력analogWrite(rgb_red,0); analogWrite(rgb_green,0); analogWrite(rgb_blue,255);Serial.print(" "); Serial.println("blue");}else if(30.0<dustDensityug&&dustDensityug<=80.0){ // 대기 중 미세먼지가 보통 일 때 녹색 출력analogWrite(rgb_red,0); analogWrite(rgb_green,255); analogWrite(rgb_blue,0);Serial.print(" "); Serial.println("green");}else if(80.0<dustDensityug&&dustDensityug<=150.0){ // 대기 중 미세먼지가 나쁨 일 때 노란색 출력analogWrite(rgb_red,255); analogWrite(rgb_green,155); analogWrite(rgb_blue,0);Serial.print(" "); Serial.println("yellow");}else{ // 대기 중 미세먼지가 매우 나쁨 일 때 빨간색 출력analogWrite(rgb_red,255); analogWrite(rgb_green,0); analogWrite(rgb_blue,0);Serial.print(" "); Serial.println("red");}//delay(2000);}
dustDensityug=(0.17*calcVoltage-0.1)*1000;Serial.print("Dust Density:"); Serial.print(dustDensityug); Serial.println("[ug/m3]");lcd.setCursor(0,1); lcd.print(dustDensityug); lcd.print("[ug/m3]");같은 값을 출력하고 있으니 LCD 뿐만 아니라 시리얼모니터에도 - 값이 나오겠죠dustDensityug 이 값이 음수가 되려면
0.17*calcVoltage-0.1
calcVoltage가 0.5882352941176471보다 작아야합니다.
미세먼지 농도가 아주 작을 때에 음수값이 나올 수도 있겠죠
먼지를 일으켰을 때도 농도가 음수값인지 체크하세요
//
소스코드에는 LED 색을 합치는 명령이 없습니다.
당연히 칼라가 합쳐서 나오지 않는 것이 정상입니다.
//
사진이나 동영상 등을 첨부하고 상세한 내용으로 작성해주세요
댓글 0
조회수 4,917등록된 댓글이 없습니다.