Test program for SPS30

Dependencies:   SPS30-sensor

Committer:
ziqiyap
Date:
Tue Mar 05 03:06:13 2019 +0000
Revision:
3:572adaa86366
Parent:
2:225c3f2a2a8a
Child:
4:91fa1c5ebbe1
printf formatting improvement

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ziqiyap 0:732c556ef648 1 #include <string>
ziqiyap 0:732c556ef648 2 #include "mbed.h"
ziqiyap 2:225c3f2a2a8a 3 #include "sps30.h"
ziqiyap 2:225c3f2a2a8a 4
ziqiyap 2:225c3f2a2a8a 5 #define SDA0 D14 //PTE25
ziqiyap 2:225c3f2a2a8a 6 #define SCL0 D15 //PTE24
ziqiyap 2:225c3f2a2a8a 7 #define LEDON 0
ziqiyap 2:225c3f2a2a8a 8 #define LEDOFF 1
ziqiyap 0:732c556ef648 9
ziqiyap 0:732c556ef648 10 using namespace std;
ziqiyap 0:732c556ef648 11
ziqiyap 0:732c556ef648 12 Serial pc(SERIAL_TX, SERIAL_RX);
ziqiyap 0:732c556ef648 13
ziqiyap 2:225c3f2a2a8a 14 sps30 sps(SDA0, SCL0, 100000); //Microchip real time clock (set as 400kHz)
ziqiyap 2:225c3f2a2a8a 15 DigitalOut myled(LED1);
ziqiyap 2:225c3f2a2a8a 16
ziqiyap 2:225c3f2a2a8a 17 //-----------------------------------------------------------------------------
ziqiyap 2:225c3f2a2a8a 18 // initial splash display
ziqiyap 2:225c3f2a2a8a 19
ziqiyap 2:225c3f2a2a8a 20 void initSplash() {
ziqiyap 2:225c3f2a2a8a 21 pc.printf("\r\n\r\n");
ziqiyap 2:225c3f2a2a8a 22 pc.printf("-----------------------------------------------------------------------------\r\n");
ziqiyap 2:225c3f2a2a8a 23 }
ziqiyap 2:225c3f2a2a8a 24
ziqiyap 2:225c3f2a2a8a 25 //-----------------------------------------------------------------------------
ziqiyap 2:225c3f2a2a8a 26 // initial the scd30
ziqiyap 2:225c3f2a2a8a 27
ziqiyap 2:225c3f2a2a8a 28 void initSPS30() {
ziqiyap 2:225c3f2a2a8a 29 pc.printf("Initializing SPS30...\r\n");
ziqiyap 2:225c3f2a2a8a 30 uint8_t dbg = sps.softReset();
ziqiyap 2:225c3f2a2a8a 31 if (dbg != sps30::SPSnoERROR) pc.printf("No ack \r\n");
ziqiyap 2:225c3f2a2a8a 32 wait_ms(2000);
ziqiyap 2:225c3f2a2a8a 33 sps.getSerialNumber();
ziqiyap 2:225c3f2a2a8a 34 pc.printf(" - SPS30 s/n ascii: ");
ziqiyap 2:225c3f2a2a8a 35 for(int i = 0; i < sizeof(sps.sn); i++)
ziqiyap 2:225c3f2a2a8a 36 {
ziqiyap 2:225c3f2a2a8a 37 pc.printf("%c", sps.sn[i]);
ziqiyap 2:225c3f2a2a8a 38 }
ziqiyap 2:225c3f2a2a8a 39 pc.printf("\r\n");
ziqiyap 2:225c3f2a2a8a 40 sps.getArticleCode();
ziqiyap 2:225c3f2a2a8a 41 pc.printf(" - SPS30 article code ascii: ");
ziqiyap 2:225c3f2a2a8a 42 for(int i = 0; i < sizeof(sps.acode); i++)
ziqiyap 2:225c3f2a2a8a 43 {
ziqiyap 2:225c3f2a2a8a 44 pc.printf("%c", sps.acode[i]);
ziqiyap 2:225c3f2a2a8a 45 }
ziqiyap 2:225c3f2a2a8a 46
ziqiyap 2:225c3f2a2a8a 47 pc.printf("\r\n");
ziqiyap 2:225c3f2a2a8a 48 sps.startMeasurement();
ziqiyap 2:225c3f2a2a8a 49 }
ziqiyap 2:225c3f2a2a8a 50
ziqiyap 2:225c3f2a2a8a 51 //-----------------------------------------------------------------------------
ziqiyap 2:225c3f2a2a8a 52 //-----------------------------------------------------------------------------
ziqiyap 2:225c3f2a2a8a 53
ziqiyap 2:225c3f2a2a8a 54
ziqiyap 2:225c3f2a2a8a 55
ziqiyap 0:732c556ef648 56 int main()
ziqiyap 0:732c556ef648 57 {
ziqiyap 2:225c3f2a2a8a 58 myled = LEDOFF;
ziqiyap 2:225c3f2a2a8a 59 pc.baud(9600);
ziqiyap 2:225c3f2a2a8a 60 wait_ms(200);
ziqiyap 2:225c3f2a2a8a 61 initSplash();
ziqiyap 2:225c3f2a2a8a 62
ziqiyap 2:225c3f2a2a8a 63 initSPS30();
ziqiyap 2:225c3f2a2a8a 64
ziqiyap 0:732c556ef648 65 int count = 0;
ziqiyap 2:225c3f2a2a8a 66 // string mass_1p0, mass_2p5, mass_4p0, mass_10p0, num_0p5, num_1p0, num_2p5, num_4p0, num_10p0, typ_pm_size;
ziqiyap 2:225c3f2a2a8a 67 pc.printf("Ready...\r\n");
ziqiyap 3:572adaa86366 68 pc.printf(" count | MASS CONCENTRATION (ug/m3) | NUMBER CONCENTRATION (#/cm3) | Typical Particle Size \r\n");
ziqiyap 3:572adaa86366 69 pc.printf(" | PM1.0 | PM2.5 | PM4.0 | PM10.0 | PM0.5 | PM1.0 | PM2.5 | PM4.0 | PM10.0 | (um) \r\n");
ziqiyap 3:572adaa86366 70 pc.printf("---------------------------------------------------------------------------------------------------------------------------\r\n");
ziqiyap 0:732c556ef648 71 while(1)
ziqiyap 0:732c556ef648 72 {
ziqiyap 2:225c3f2a2a8a 73 myled = !myled;
ziqiyap 2:225c3f2a2a8a 74 wait_ms(250);
ziqiyap 2:225c3f2a2a8a 75 sps.getReadyStatus();
ziqiyap 2:225c3f2a2a8a 76 uint16_t redy = sps.ready;
ziqiyap 2:225c3f2a2a8a 77 if(redy == sps30::SPSisReady) {
ziqiyap 2:225c3f2a2a8a 78 uint8_t crcc = sps.readMeasurement();
ziqiyap 2:225c3f2a2a8a 79 count++;
ziqiyap 2:225c3f2a2a8a 80 if(crcc != sps30::SPSnoERROR) pc.printf("ERROR: %d\r\n", crcc);
ziqiyap 3:572adaa86366 81 else pc.printf(" %5d | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f | %7.3f \r\n", \
ziqiyap 2:225c3f2a2a8a 82 count, sps.mass_1p0_f, sps.mass_2p5_f, sps.mass_4p0_f, sps.mass_10p0_f, sps.num_0p5_f, \
ziqiyap 2:225c3f2a2a8a 83 sps.num_1p0_f, sps.num_2p5_f, sps.num_4p0_f, sps.num_10p0_f, sps.typ_pm_size_f);
ziqiyap 1:6a9693f310f7 84 }
ziqiyap 2:225c3f2a2a8a 85 wait(5);
ziqiyap 0:732c556ef648 86 }
ziqiyap 0:732c556ef648 87 }