답변 : 아두이노 미세먼지 LCD RGB_LED 서보모터
페이지 정보
작성자 master 작성일18-06-17 02:48 조회4,947회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-06-17 오전 2:52:14
// by Ok-Hyun Park
//
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
//
#include <Servo.h>
int servoPin=9;
//
int dust_sensor=A0;
int sensor_led=12;
int rgb_red=5,rgb_green=6,rgb_blue=7; // rgb
int piezo=3;
//
float dust_value=0,dustDensityug=0;
//
void setup(){
Serial.begin(9600);
pinMode(sensor_led,OUTPUT); // 미세먼지 적외선 led
pinMode(rgb_red,OUTPUT); pinMode(rgb_green,OUTPUT); pinMode(rgb_blue,OUTPUT); // 3색 LED
pinMode(piezo,OUTPUT);
lcd.init(); lcd.backlight();
servo.attach(servoPin);
}
//
void loop(){
digitalWrite(sensor_led,LOW); delayMicroseconds( 280); // LED 켜기
dust_value=analogRead(dust_sensor); delayMicroseconds( 40); // 센서 값 읽어오기
digitalWrite(sensor_led,HIGH); delayMicroseconds(9680); // LED 끄기
dustDensityug=(0.17*(dust_value*(5.0/1024))-0.1)*1000;
lcd.setCursor(0,0); lcd.print("HAP: ");
lcd.setCursor(0,1); lcd.print(dustDensityug);
//
if(dustDensityug<=30.0){ // 좋음 파란색
analogWrite(rgb_red,0); analogWrite(rgb_green,0); analogWrite(rgb_blue,255);
lcd.print("blue");
servo.write(90);
}
else if(dustDensityug<=80.0){ // 보통 녹색
analogWrite(rgb_red,0); analogWrite(rgb_green,255); analogWrite(rgb_blue,0);
lcd.print("green");
}
else if(dustDensityug<=150.0){ // 나쁨 노란색
analogWrite(rgb_red,255); analogWrite(rgb_green,155); analogWrite(rgb_blue,0);
lcd.print("yellow");
digitalWrite(piezo,HIGH); delay(1000); digitalWrite(piezo,LOW); delay(1000);
}
else{ // 매우 나쁨빨간색
analogWrite(rgb_red,255); analogWrite(rgb_green,0); analogWrite(rgb_blue,0);
lcd.print("red");
digitalWrite(piezo,HIGH); delay(1000); digitalWrite(piezo,LOW); delay(1000);
servo.write(180);
}
delay(2000);
}
댓글 : 0
조회수 : 4,947
등록된 댓글이 없습니다.