BASIC4MCU | 질문게시판 | 답변 : 앱인벤터를 통해 블루투스로 습도값이나 가스값의 기준을 변경할 수 있나요?
페이지 정보
작성자 master 작성일2019-06-27 16:20 조회4,752회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=9525
본문
if(GasValue>=350){ // 정회전 // <---- 가스 값이 350 이상일 때 켜지고if(flag==0){ flag=1; myStepper.step(stepsPerRevolution); ss(); }}if(GasValue<300){ // 역회전 // <---- 가스 값이 300 미만일때 꺼지도록if(flag==1){ flag=0; myStepper.step(-stepsPerRevolution); ss(); }}여기서 체크 값을 변수로 변경해야겠죠?
//int GasValue,flag=0;int GasValue,GasMin=300,GasMax=350,flag=0;전역변수 추가하고
if(GasValue>=GasMax){ // 정회전 // <---- 가스 값이 350 이상일 때 켜지고if(flag==0){ flag=1; myStepper.step(stepsPerRevolution); ss(); }}if(GasValue<GasMin){ // 역회전 // <---- 가스 값이 300 미만일때 꺼지도록if(flag==1){ flag=0; myStepper.step(-stepsPerRevolution); ss(); }}300,350 대신 변수를 대입합니다.
if(val=='a'){ GasMax=300; GasMin=250; } // 설정값 변경if(val=='b'){ GasMax=350; GasMin=300; }if(val=='c'){ GasMax=400; GasMin=350; }모든 범위를 다 입력하면 좋겠지만 실제로 그렇게까지 쓸 일은 없고
위에는 3종류만 예시로 들었지만 알파벳 소문자 영역이 24가지이므로 더 추가할 수는 있습니다.
(알파벳 대문자 구역도 23개가 비어있습니다. 부족하면 0x80~0xFF 구간도 128개가 더 있고, 그 외에도...)
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-06-27 오후 4:15:55// by Ok-Hyun Park//#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 DHT11DHT 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=='2'){ mode=0; digitalWrite(fan,1); } // 수동모드 fan onif(val=='3'){ mode=0; digitalWrite(fan,0); } // 수동모드 fan off//if(val=='4'){ digitalWrite(LED,1); } // LED onif(val=='5'){ digitalWrite(LED,0); } // LED off//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=='a'){ GasMax=300; GasMin=250; } // 설정값 변경if(val=='b'){ GasMax=350; GasMin=300; }if(val=='c'){ GasMax=400; GasMin=350; }//if(val=='A'){ mode=1; } // AUTO 모드로 변경}//----------------------------------------------------------------------------if(mode){ // mode=1(자동모드)일 때만 동작GasValue=analogRead(gasPin); // 가스핀의 값을 읽기Serial.print("GasValue="); Serial.println(GasValue);//if(GasValue>=350){ // 정회전 // <---- 가스 값이 350 이상일 때 켜지고if(flag==0){ flag=1; myStepper.step(stepsPerRevolution); ss(); }}if(GasValue<300){ // 역회전 // <---- 가스 값이 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 onelse { digitalWrite(fan,0); } // 자동모드 fan off}}}//현재 가스 값이 350 이상일 때,300 미만일때 켜지고 꺼지도록 만들어 놨는데,혹시 앱인벤터의 휴대폰화면에서 이 기준 값을 변경할 수 있을까요?습도값인 h 도 마찬가지구요..50이상일 경우 fan이 돌아가는데 이 값을 40으로 바꾸거나,이런식으로응용을 해보고 싶습니다.제가 휴대폰에서 변경이 가능해야 뭔가 더 발전될 것 같습니다^^
댓글 1
조회수 4,752푸링이님의 댓글
푸링이 작성일항상 감사합니다. 이것을 이용하고 응용해서 혼자 한 번 만져보겠습니다 감사합니다!!