etienne maillet / Mbed 2 deprecated Example_DS3231_test

Dependencies:   Adafruit_SGP30_mbed mbed CCS811 mbed-rtos ALPHASENSE Adafruit_ADS1015_ BME680

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HPMA115S0.cpp Source File

HPMA115S0.cpp

00001 #include "HPMA115S0.h"
00002 
00003 HPMA115S0::HPMA115S0(Serial* serial)
00004 {
00005     this->serial = serial;
00006     serial->baud(9600);
00007     pm10_count = 0;
00008     pm2_5_count = 0;
00009 }
00010 
00011 float HPMA115S0::getPM10()
00012 {
00013     return pm10_count;
00014 }
00015 
00016 float HPMA115S0::getPM2_5()
00017 {
00018     return pm2_5_count;
00019 }
00020 
00021 void HPMA115S0::read() 
00022 {
00023     uint8_t msg[4]={0x68,0x01,0x04,0x93};
00024     uint8_t ack[8]={0,0,0,0,0,0,0,0};
00025     printf("%d %d  %d %d %d %d\r\n",ack[0],ack[1],ack[2],ack[3],ack[4],ack[5]);
00026     serial->write(msg, sizeof(msg), NULL);
00027     while(serial->readable()==0){}
00028     if(serial->readable()==1){
00029        //serial->read(ack, sizeof(ack), NULL);
00030        for(int i=0;i<8;i++){
00031             ack[i]=serial->getc();
00032         }
00033     }
00034     printf("%d %d %d %d %d %d %d %d\r\n",ack[0],ack[1],ack[2],ack[3],ack[4],ack[5],ack[6],ack[7]);
00035     pm10_count = ((ack[6] << 8) + ack[7]);
00036     pm2_5_count = ((ack[4] << 8) + ack[5]);
00037 }
00038 
00039 void HPMA115S0::start() 
00040 {
00041     uint8_t msg[4]={0x68,0x01,0x01,0x96};
00042     uint8_t ack[2]={0,0};
00043     printf("%d %d \r\n",ack[0],ack[1]);
00044     serial->write(msg, sizeof(msg), NULL);
00045     while(serial->readable()==0){}
00046     if(serial->readable()==1){
00047        //serial->read(ack, sizeof(ack), NULL);
00048         ack[0]=serial->getc();
00049         ack[1]=serial->getc();
00050     }
00051     printf("%d %d \r\n",ack[0],ack[1]);
00052 }
00053 
00054 
00055 void HPMA115S0::stop() 
00056 {
00057     uint8_t msg[4]={0x68,0x01,0x02,0x95};
00058     uint8_t ack[2]={0,0};
00059     printf("%d %d \r\n",ack[0],ack[1]);
00060     serial->write(msg, sizeof(msg), NULL);
00061     while(serial->readable()==0){}
00062     if(serial->readable()==1){
00063        //serial->read(ack, sizeof(ack), NULL);
00064         ack[0]=serial->getc();
00065         ack[1]=serial->getc();
00066     }
00067     printf("%d %d \r\n",ack[0],ack[1]);
00068 }
00069 
00070 
00071 void HPMA115S0::set_customer_coef() 
00072 {
00073     uint8_t msg[5]={0x68,0x01,0x08,0x64, 0x2A};
00074     uint8_t ack[2]={0,0};
00075     printf("%d %d \r\n",ack[0],ack[1]);
00076     serial->write(msg, sizeof(msg), NULL);
00077     while(serial->readable()==0){}
00078     if(serial->readable()==1){
00079        //serial->read(ack, sizeof(ack), NULL);
00080         ack[0]=serial->getc();
00081         ack[1]=serial->getc();
00082     }
00083     printf("%d %d \r\n",ack[0],ack[1]);
00084 }
00085 
00086 
00087 void HPMA115S0::read_customer_coef() 
00088 {
00089     uint8_t msg[4]={0x68,0x01,0x10,0x87};
00090     uint8_t ack[2]={0,0};
00091     printf("%d %d \r\n",ack[0],ack[1]);
00092     serial->write(msg, sizeof(msg), NULL);
00093     while(serial->readable()==0){}
00094     if(serial->readable()==1){
00095        //serial->read(ack, sizeof(ack), NULL);
00096         ack[0]=serial->getc();
00097         ack[1]=serial->getc();
00098     }
00099     printf("%d %d \r\n",ack[0],ack[1]);
00100 }
00101 
00102 
00103 void HPMA115S0::stop_autosend() 
00104 {
00105     uint8_t msg[4]={0x68,0x01,0x20,0x77};
00106     char ack[2]={0,0};
00107     printf("%d %d \r\n",ack[0],ack[1]);
00108     serial->write(msg, sizeof(msg), NULL);
00109     while(serial->readable()==0){}
00110     if(serial->readable()==1){
00111        //serial->read(ack, sizeof(ack), NULL);
00112         ack[0]=serial->getc();
00113         ack[1]=serial->getc();
00114     }
00115     printf("%d %d\r\n",ack[0],ack[1]);
00116 }
00117 
00118 void HPMA115S0::enable_autosend() 
00119 {
00120     uint8_t msg[4]={0x68,0x01,0x40,0x57};
00121     uint8_t ack[2]={0,0};
00122     printf("%d %d \r\n",ack[0],ack[1]);
00123     serial->write(msg, sizeof(msg), NULL);
00124     while(serial->readable()==0){}
00125     if(serial->readable()==1){
00126        //serial->read(ack, sizeof(ack), NULL);
00127         ack[0]=serial->getc();
00128         ack[1]=serial->getc();
00129     }
00130     printf("%d %d \r\n",ack[0],ack[1]);
00131 }
00132 
00133 void HPMA115S0::read_autosend() 
00134 {
00135     printf("yo\r\n");
00136     while(serial->readable()==0){}
00137     if(serial->readable()==1){
00138         serial->read(buffer, PACKET_SIZE, NULL);
00139         for(int i=1;i<33;i++){
00140             printf("%d ",buffer[i]);
00141         }
00142         if(buffer[1]==0x42){
00143             if(buffer[2]==0x4d){
00144                 pm10_count = ((buffer[9] << 8) + buffer[10]);
00145                 pm2_5_count = ((buffer[7] << 8) + buffer[8]);
00146             }
00147         }
00148     }
00149 }