Ceci est une ancienne révision du document !
Lecture des valeurs du capteur de particules
#include <Arduino.h> #define LENG 32 char buf[LENG]; 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[0] == 0x42 && buf[1] == 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[i]; } if(receiveSum==((thebuf[leng-2]<<8)+thebuf[leng-1]+thebuf[leng-2]+thebuf[leng-1])) //check the serial data { receiveSum=0; receiveflag=1; } return receiveflag; } int transmitPM01(char *thebuf) { int PM01Val; PM01Val=((thebuf[4]<<8) + thebuf[5]); //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[6]<<8) + thebuf[7]);//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]<<8) + thebuf[9]); //count PM10 value of the air detector module return PM10Val; }