BASIC4MCU | 질문게시판 | 앱인벤터를 통해 블루투스로 습도값이나 가스값의 기준을 변경할 수 있나요?
페이지 정보
작성자 푸링이 작성일2019-06-27 16:06 조회7,107회 댓글0건본문
#include <SoftwareSerial.h>
SoftwareSerial btSerial(2,3);
//
#include <Stepper.h>
const int stepsPerRevolution=1024; // 1024는 90도를 의미
Stepper myStepper(stepsPerRevolution,11,9,10,8); // 회전각도와 연결할 핀 번호
//
#include <DHT.h>
#define DHTPIN 4 // DHT센서를 4번 핀에 연결
#define DHTTYPE DHT11
DHT dht(DHTPIN,DHTTYPE);
//
int gasPin=A0; // 가스 핀을 A0번에 연결
int fan=7,LED=13;
//
float h=0,t,f,hic,hif;
int GasValue,flag=0;
char val,mode=1; // 초기값 자동모드
unsigned long dhttime;
//
void setup(){
pinMode(fan,OUTPUT);
pinMode(LED,OUTPUT);
dht.begin();
myStepper.setSpeed(14); // 스텝모터의 회전속도
Serial.begin(9600);
btSerial.begin(9600);
dhttime=millis();
}
//
void ss(){ Serial.print("GasValue="); Serial.println(GasValue); }
//
void loop(){
if(btSerial.available()){
val=btSerial.read(); //
if(val=='6'){ mode=0; // 정회전
if(flag==0){ flag=1; myStepper.step(stepsPerRevolution); }
}
if(val=='7'){ mode=0; // 역회전
if(flag==1){ flag=0; myStepper.step(-stepsPerRevolution); }
}
if(val=='2'){ mode=0; digitalWrite(fan,1); } // 수동모드 fan on
if(val=='3'){ mode=0; digitalWrite(fan,0); } // 수동모드 fan off
//
if(val=='4'){ digitalWrite(LED,1); } // LED on
if(val=='5'){ digitalWrite(LED,0); } // LED off
//
if(val=='A'){ mode=1; } // AUTO 모드로 변경
}
//----------------------------------------------------------------------------
if(mode){ // mode=1(자동모드)일 때만 동작
GasValue=analogRead(gasPin); // 가스핀의 값을 읽기
Serial.print("GasValue= "); Serial.println(GasValue);
//
if(GasValue>=350){ // 정회전
if(flag==0){ flag=1; myStepper.step(stepsPerRevolution); ss(); }
}
else if(GasValue<300){ // 역회전
if(flag==1){ flag=0; myStepper.step(-stepsPerRevolution); ss(); }
}
//
if(millis()-dhttime>=1500){ dhttime=millis();
h=dht.readHumidity(); t=dht.readTemperature(); f=dht.readTemperature(true);
if(isnan(h)||isnan(t)||isnan(f)){ Serial.println("Fail DHT!"); return; } // 온습도 읽기 실패
hic=dht.computeHeatIndex(t,h,false);
hif=dht.computeHeatIndex(f,h);
//
Serial.print("습도: "); Serial.print(h); Serial.print("% ");
Serial.print("온도: "); Serial.print(t); Serial.println("도 ");
//
if(h>=50){ digitalWrite(fan,1); } // 자동모드 fan on
else { digitalWrite(fan,0); } // 자동모드 fan off
}
}
}
현재 가스 값이 350 이상일 때, 300 미만일때 켜지고 꺼지도록 만들어 놨는데,
혹시 앱인벤터의 휴대폰화면에서 이 기준 값을 변경할 수 있을까요?
습도값인 h 도 마찬가지구요.. 50이상일 경우 fan이 돌아가는데 이 값을 40으로 바꾸거나, 이런식으로
응용을 해보고 싶습니다. 제가 휴대폰에서 변경이 가능해야 뭔가 더 발전될 것 같습니다 ^^
댓글 0
조회수 7,107등록된 댓글이 없습니다.