dingshidong 发表于 2016-3-7 22:32:02

lovezypj 发表于 2016-1-13 22:30 static/image/common/back.gif
if(mCheck == mPkt*256+mPkt)//crc ok

你这个校验不对吧?


#include <Arduino.h>
#define LENG 32
char buf;

int PM01Value=0;          //define PM1.0 value of the air detector module
int PM2_5Value=0;         //define PM2.5 value of the air detector module
int PM10Value=0;         //define PM10 value of the air detector module

void setup()
{
Serial.begin(9600);
}

void loop()
{
if(Serial.available())
{
    Serial.readBytes(buf,LENG);
    if(buf == 0x42 && buf == 0x4d){
      if(checkValue(buf,LENG)){
      PM01Value=transmitPM01(buf); //count PM1.0 value of the air detector module
      PM2_5Value=transmitPM2_5(buf);//count PM2.5 value of the air detector module
      PM10Value=transmitPM10(buf); //count PM10 value of the air detector module
      }         
    }
}
static unsigned long OledTimer=millis();
    if (millis() - OledTimer >=1000)
    {
      OledTimer=millis();
      
      Serial.print("PM1.0: ");//send PM1.0 data to bluetooth
      Serial.print(PM01Value);
      Serial.println("ug/m3");            
   
      Serial.print("PM2.5: ");//send PM1.0 data to bluetooth
      Serial.print(PM2_5Value);
      Serial.println("ug/m3");   
      
      Serial.print("PM10:");//send PM1.0 data to bluetooth
      Serial.print(PM10Value);
      Serial.println("ug/m3");   
    }
   
}
char checkValue(char *thebuf, char leng)
{
char receiveflag=0;
int receiveSum=0;
char i=0;

for(i=0;i<leng;i++)
{
receiveSum=receiveSum+thebuf;
}
   
if(receiveSum==((thebuf<<8)+thebuf+thebuf+thebuf))//check the serial data
{
    receiveSum=0;
    receiveflag=1;
}
return receiveflag;
}

int transmitPM01(char *thebuf)
{
int PM01Val;
PM01Val=((thebuf<<8) + thebuf); //count PM1.0 value of the air detector module
return PM01Val;
}

//transmit PM Value to PC
int transmitPM2_5(char *thebuf)
{
int PM2_5Val;
PM2_5Val=((thebuf<<8) + thebuf);//count PM2.5 value of the air detector module
return PM2_5Val;
}

//transmit PM Value to PC
int transmitPM10(char *thebuf)
{
int PM10Val;
PM10Val=((thebuf<<8) + thebuf); //count PM10 value of the air detector module
return PM10Val;
}
页: 1 [2]
查看完整版本: 攀藤 G3 粉尘激光传感器