關於 Sharp GP2Y1051A


 基本上如果不深論處理的公式原理,那就直接套用!
但是唯一要記的就是 上傳 時候,
一定要把TX線 移除!
如果不移除會搶到USB的TX腳位
因為是用同一線路,會一直失敗!




   int incomeByte[7];
    int data;
    int z=0;
    int sum,count;
    unsigned long starttime;
    float average_pm2d5,sum_2s;

    //#include <SD.h>
    //File myFile;

    void setup()
    {
      Serial.begin(2400);
      //SD.begin(4);
      starttime=millis();
    }

    void loop()
    {

      while (Serial.available()>0){
        data=Serial.read();
        if(data == 170){
          z=0;
          incomeByte[z]=data;
        }
        else{
          z++;
          incomeByte[z]=data;
        }
        if(z==6)
        {
          sum=incomeByte[1]+ incomeByte[2]+ incomeByte[3] + incomeByte[4];
          if(incomeByte[5]==sum && incomeByte[6]==255 )
          {
            float vo=(incomeByte[1]*256.0+incomeByte[2])/1024.00*5.000;
            float c=vo*700;
            sum_2s=sum_2s+c;
            count++;
            if(abs(millis()-starttime)>2000){  
              average_pm2d5=(sum_2s/count)*1.00;
              Serial.print("PM2.5_Average = ");
              Serial.println(average_pm2d5,2);
              starttime=millis();
              sum_2s=0;
              count=0;
            }
          }
          else{
            z=0;
            Serial.flush();
            data='/0';
            for(int m=0;m<7;m++){
              incomeByte[m]=0;
            }
          }
          z=0;
        }
      }
    }

留言