BASIC4MCU | 질문게시판 | 아두이노를 이용한 스마트 환풍기
페이지 정보
작성자 굳은살 작성일2018-09-04 14:37 조회7,103회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2903
본문
아두이노를 이용한 축이 회전하는 환풍기
제가 아두이노로 하나의 온도센서(DHT22)로는 외부의 온도를 측정하고 또 하나의 온도센서(DHT22)로는 내부의 온도를 측정해서 온도에 따라 환풍기에 연결된 스텝모터를 180도 회전시켜 외부의 공기를 내부로 들이기도하고 내부의 공기를 외부로 빼기도 하며 또한 미세먼지센서(GP2Y10)로 미세먼지의 농도에 따라 외부의 공기를 내부로 들이기도하고 내부의 공기를 외부로 빼기도 하며 MQ-5, MQ-7 센서를 내부에 둬서 가스나 일산화탄소 감지시 스텝모터가 작동하여 환풍기의 축을 180도 회전시켜 내부공기를 외부로 보내는
기능을 구상중인데 너무 여러가지 조건이 있어서 서로 우선순위를 정하는 법을 몰라 코드끼리 충돌하는 거 같습니다
또한 LCD로는 내부 및 외부온도와 미세먼지 농도만 출력해보고 싶습니다.
초행길이라 너무 서툽니다.. 도와주시길 간곡히 부탁드려도 되겠습니까?
#include <DHT.h>
#include <Stepper.h>
#include <LiquidCrystal.h>
#define DHTPIN1 24
#define DHTPIN2 25
#define DHTTYPE DHT22
LiquidCrystal lcd(6, 7, 2, 3, 4, 5);
const int stepsPerRevolution=1024;
int lcd_key = 0;
int adc_key_in = 0;
int MQ5 = A1;
int MQ7 = A2;
int Vo = A0;
int V_LED = 23;
int FAN = 26;
int SM = A3;
int target = 0;
int angle = 0;
float t1 = 0;
float t2 = 0;
float Vo_value = 0;
float Voltage = 0;
float dustDensity = 0;
Stepper myStepper(stepsPerRevolution,11,9,10,8);
DHT dht1(DHTPIN1,DHTTYPE);
DHT dht2(DHTPIN2,DHTTYPE);
void setup(){
pinMode(MQ5, INPUT);
pinMode(MQ7, INPUT);
pinMode(V_LED, OUTPUT);
pinMode(Vo, INPUT);
lcd.begin(16, 2);
pinMode(FAN,OUTPUT);
pinMode(SM,OUTPUT);
myStepper.setSpeed(14);
Serial.begin(9600);
}
void loop(){
t1=dht1.readTemperature();
Serial.print("Temperature_01(℃)=");
Serial.print(t1);
t2=dht2.readTemperature();
Serial.print("Temperature_02(℃)=");
Serial.print(t2);
dht22();
Serial.print("MQ-5 = ");
Serial.println(analogRead(MQ5));
Serial.print("MQ-7 = ");
Serial.println(analogRead(MQ7));
digitalWrite(V_LED, LOW);
delayMicroseconds(280);
Vo_value = analogRead(Vo);
delayMicroseconds(40);
digitalWrite(V_LED,HIGH);
delayMicroseconds(9680);
Voltage = (Vo_value * 5.0) / 1024.0;
dustDensity = (Voltage - 0.10) / 0.005;
Serial.print("dustDensity = ");
Serial.println(dustDensity);
lcd.print(t1);
lcd.print(t2);
lcd.println(analogRead(MQ5));
lcd.println(analogRead(MQ7));
lcd.println(dustDensity);
if(analogRead(MQ5)>=500)
{}
if(t2>=18.0&&t2<=25)
{ digitalWrite(FAN,LOW ); target= 90; }
else if(t2<=17.9&&t1>=18)
{ digitalWrite(FAN,HIGH); target=180; }
else if(t2>=25.1&&t1<=25)
{ digitalWrite(FAN,HIGH); target= 0; }
while(target>angle){ angle++; myStepper.step( 1); delay(10); }
while(target<angle){ angle--; myStepper.step(-1); delay(10); }
delay(1000);
}
댓글 0
조회수 7,103등록된 댓글이 없습니다.