BASIC4MCU | 질문게시판 | 앱인벤터 에러관련하여 질문있습니다
페이지 정보
작성자 제임스키드 작성일2019-11-21 12:49 조회3,559회 댓글0건본문
#include <SoftwareSerial.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Adafruit_Sensor.h>
#define DHTPIN A1
#define relay 10
#define relayA 11
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);bool flag=0;
int h,t,gas,gas2;
int TxPin = 2;
int RxPin = 3;
char crt1;
int mode = 1;
int i;
int gasvalue=400;
int hvalue=60;
SoftwareSerial BTSerial(TxPin, RxPin);
void setup(){
Serial.begin(9600);
pinMode(A0,INPUT); pinMode(A2,INPUT);
pinMode(relay,OUTPUT); pinMode(relayA,OUTPUT);
BTSerial.begin(9600);
}
//
void loop(){h=dht.readHumidity();
t=dht.readTemperature();
gas=analogRead(A0);
gas2=analogRead(A2);//---------------------------
if(BTSerial.available()){ //시리얼 모니터(PC)에서 신호가 있으면,
crt1 = BTSerial.read();
if(crt1 == 'A')
{mode=0;
BTSerial.write(Serial.read()); //시리얼 모니터 입력 내용을 블루투스에 출력
BTSerial.print("습도: ");
BTSerial.print(h);
BTSerial.println("% ");
BTSerial.print("가스 ");
BTSerial.print(gas);
digitalWrite(relay,HIGH);
}
if(crt1 == 'B')
{mode=0;
digitalWrite(relay,LOW);
mode =1;
}
if(crt1 == 'C'){digitalWrite(relayA,HIGH);
mode=1;
}
if(crt1 == 'D')
{
digitalWrite(relayA,LOW);
mode=1;
}}
if(mode){
if((gas<gasvalue)&&(h<hvalue)&&(gas2<300)){
Serial.println(h);
Serial.print("%");
Serial.println(gas);
Serial.println(gas2);
BTSerial.write(Serial.read()); //시리얼 모니터 입력 내용을 블루투스에 출력
BTSerial.print("습도: ");
BTSerial.print(h);
BTSerial.println("% ");
BTSerial.print("가스 ");
BTSerial.print(gas);
BTSerial.print("ppm");
BTSerial.print(gas2);
BTSerial.print("ppm");
digitalWrite(relay,LOW);
}
else{
digitalWrite(relay,HIGH);
if(h > hvalue){
Serial.println(h);
Serial.println("humidity.WARNING");
BTSerial.print(h);
BTSerial.print("습도 warning ");
delay(10000);
BTSerial.print("% ");
}
if(gas2>200){Serial.println(h);
Serial.println("gas.WARNING");
BTSerial.print(gas2);
BTSerial.print("gas warning ");
delay(10000);
}
if(gas>gasvalue){ Serial.print(gas);
Serial.println("gas.WARNING");
BTSerial.print(gas);
BTSerial.print("gas warning ");
delay(15000);}
}if(gas<400){
if(flag){ flag=0;
Serial.print("perfume");
delay(10000);
digitalWrite(relayA,HIGH);
for(i=0;i<100;i++){
delay(100);}
digitalWrite(relayA,LOW);
}
}
else{ flag=1; }delay(1000);
}}
앱인벤터를 통해 relay 소자를 제어시키는 과정에서 crt1==C인과정 즉 앱상에서는 향수가 뿌려지는 과정만 하고나면
eror-516 broken pipe라는 메시지가 뜨는데 이건 왜이런건가요?ㅜㅜ 어떻게 해결할수 있을까요?
참고로 relayA로 제어하는 전압은 3.3v입니다 이게 문제일까요??
댓글 0
조회수 3,559등록된 댓글이 없습니다.