Decoding PMS5003 Code
Decoding PMS5003 Code
// Arduino-like Programming
// (C) 2006, H.Inomatavoid loop()
{
if (Serial1.available()) {
cc = (unsigned char)Serial1.read();
switch (data_ptr) {
case 0:
if ( cc == 0x42 ) {
data_ptr = 0;
data_buf[data_ptr++] = cc;
chksum = cc;
} else {
// NOP
}
break; case 1:
if ( cc == 0x4d ) {
data_buf[data_ptr++] = cc;
chksum += cc;
} else {
data_ptr = 0;
// NOP
}
break;
case 30:
data_chk = data_buf[data_ptr++] = cc;
break;
if (data_chk == chksum) {
Serial.println( "* PM1.0, PM2.5, PM10 ug/m^3" );
Serial.print( (data_buf[2]*256 + data_buf[3]), DEC );
Serial.print( "," );
Serial.print( (data_buf[4]*256 + data_buf[5]), DEC );
Serial.print( "," );
Serial.println( (data_buf[6]*256 + data_buf[7]), DEC );
default:
data_buf[data_ptr++] = cc;
chksum += cc;
}
}
}?