정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

3가지 가스센서를 이용한 아두이노
아이러니 | 2017-11-18

아두이노와 블루투스모듈 그리고 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;
        }
      

      
      
      

이전글   |    블루투스 조이스틱으로 조종하는 아두이노... 2017-11-18
다음글   |    아두이노와 앱인벤터 2017-11-18