아두이노와 블루투스모듈 그리고 3가지 가스센서를 이용해서 어플을 제작하고 있습니다.
아두이노에서 만약 데이터값이 1이라면 센서값을 보내고 0이라면 0이나 WARNING을 보내고 싶은데 뭘 고쳐야되
는지 모르겠어서 질문드립니다. 제가 사용한 코드는 아래 적었습니다. 도와주세요 ㅠㅠㅠㅠㅠㅠㅠ
#include <SoftwareSerial.h>
#define H2SVALUE 2.7f
#define COVALUE 9.0f
#define O2VALUE 18.0f
const float VRefer = 3.3;
SoftwareSerial mySerial(2, 3);
String myString="";
char a=0,b=0,c=0,result;
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
GetH2S();
GetCO();
GetO2();
result = a | b | c;
mySerial.write(result);
delay(1000);
}
void GetH2S()
{
float H2S;
H2S = getH2S();
if(H2S >= H2SVALUE)
{
Serial.print("WARNING\n");
Serial.println("");
a= 1;
}
else
{
Serial.print(H2S);
mySerial.print(H2S);
Serial.println("ppm");
Serial.println("");
a=0;
}
}
void GetCO()
{
float CO;
CO = getCO();
if(CO >= COVALUE)
{
Serial.print("WARNING\n");
Serial.println("");
b=1;
}
else
{
Serial.print(CO);
mySerial.print(CO);
Serial.println("ppm");
Serial.println("");
b=0;
}
}
void GetO2()
{
float O2;
O2 = getO2();
if(O2 <= O2VALUE)
{
Serial.print("WARNING\n");
Serial.println("");
c=1;
}
else
{
Serial.print(O2);
mySerial.print(O2);
Serial.println("%");
Serial.println("");
c=0;
}
}
float getH2S()
{
float H2S = analogRead(A0);
float voltage = ((H2S*5/1024)+0.4776)/0.289;
return voltage;
}
float getCO()
{
float CO = analogRead(A1);
float voltage = ((CO*5/1024)+2.34)/0.5553;
return voltage;
}
float getO2() //산소
{
float MeasuredVout = readO2Vout();
float Concentration = MeasuredVout * 0.17 / 2.0;
float Concentration_Percentage=Concentration*100;
return Concentration_Percentage;
}
float readO2Vout() //산소
{
long sum = 0; //초기값 0
for(int i=0; i<32; i++)
{
sum += analogRead(A2);
}
sum >>= 5;
float MeasuredVout = sum * (VRefer / 1023.0);
return MeasuredVout;
}
|