SCD30 test van Dhr Dejonghe

Dependencies:   mbed scd30

Committer:
WimDejonghe
Date:
Thu Mar 31 09:00:38 2022 +0000
Revision:
2:7d93889ab88b
Parent:
1:07dbea660864
DejongheSCD30

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loopsva 0:e4e96ef907b2 1 #include "mbed.h"
loopsva 0:e4e96ef907b2 2 #include "scd30.h"
loopsva 0:e4e96ef907b2 3
loopsva 0:e4e96ef907b2 4 #define SDA0 D14 //PTE25
loopsva 0:e4e96ef907b2 5 #define SCL0 D15 //PTE24
loopsva 0:e4e96ef907b2 6 #define LEDON 0
loopsva 0:e4e96ef907b2 7 #define LEDOFF 1
WimDejonghe 2:7d93889ab88b 8 //A5,D3,D4
WimDejonghe 2:7d93889ab88b 9 DigitalOut rled(A5);
WimDejonghe 2:7d93889ab88b 10 DigitalOut gled(D3); //also PTE26 (J2-1)
WimDejonghe 2:7d93889ab88b 11 DigitalOut bled(D4);
loopsva 0:e4e96ef907b2 12
WimDejonghe 2:7d93889ab88b 13 Serial pc(USBTX, USBRX);
loopsva 0:e4e96ef907b2 14
loopsva 0:e4e96ef907b2 15 scd30 scd(SDA0, SCL0, 400000); //Microchip real time clock
loopsva 0:e4e96ef907b2 16
loopsva 0:e4e96ef907b2 17 //-----------------------------------------------------------------------------
loopsva 0:e4e96ef907b2 18 // initial splash display
loopsva 0:e4e96ef907b2 19
loopsva 0:e4e96ef907b2 20 void initSplash() {
loopsva 0:e4e96ef907b2 21 pc.printf("\r\n\r\n");
loopsva 0:e4e96ef907b2 22 pc.printf("-----------------------------------------------------------------------------\r\n");
loopsva 0:e4e96ef907b2 23 }
loopsva 0:e4e96ef907b2 24
loopsva 0:e4e96ef907b2 25 //-----------------------------------------------------------------------------
loopsva 0:e4e96ef907b2 26 // initial the scd30
loopsva 0:e4e96ef907b2 27
loopsva 0:e4e96ef907b2 28 void initSCD30() {
loopsva 0:e4e96ef907b2 29 pc.printf("Initializing SCD30...\r\n");
loopsva 0:e4e96ef907b2 30 scd.softReset();
loopsva 0:e4e96ef907b2 31 wait_ms(2000);
loopsva 1:07dbea660864 32 scd.getSerialNumber();
loopsva 0:e4e96ef907b2 33 pc.printf(" - SCD30 s/n: ");
loopsva 1:07dbea660864 34 for(int i = 0; i < sizeof(scd.scdSTR.sn); i++) pc.printf("%c", scd.scdSTR.sn[i]);
loopsva 0:e4e96ef907b2 35 pc.printf("\r\n");
loopsva 0:e4e96ef907b2 36
loopsva 0:e4e96ef907b2 37 scd.setMeasInterval(5);
loopsva 0:e4e96ef907b2 38 scd.startMeasurement(0);
loopsva 0:e4e96ef907b2 39 }
loopsva 0:e4e96ef907b2 40
loopsva 0:e4e96ef907b2 41 //-----------------------------------------------------------------------------
loopsva 0:e4e96ef907b2 42 //-----------------------------------------------------------------------------
loopsva 0:e4e96ef907b2 43
loopsva 0:e4e96ef907b2 44 int main()
loopsva 0:e4e96ef907b2 45 {
loopsva 0:e4e96ef907b2 46 rled = gled = bled = LEDOFF;
WimDejonghe 2:7d93889ab88b 47 //pc.baud(230400);
loopsva 0:e4e96ef907b2 48 wait_ms(200);
loopsva 0:e4e96ef907b2 49 initSplash();
loopsva 0:e4e96ef907b2 50
loopsva 0:e4e96ef907b2 51 initSCD30();
loopsva 0:e4e96ef907b2 52 int count = 0;
loopsva 0:e4e96ef907b2 53
loopsva 0:e4e96ef907b2 54 pc.printf("Ready...\r\n");
loopsva 0:e4e96ef907b2 55 while(1) {
loopsva 0:e4e96ef907b2 56 gled = !gled;
loopsva 0:e4e96ef907b2 57 wait_ms(250);
loopsva 1:07dbea660864 58 scd.getReadyStatus();
loopsva 1:07dbea660864 59 uint16_t redy = scd.scdSTR.ready;
loopsva 0:e4e96ef907b2 60 if(redy == scd30::SCDisReady) {
loopsva 1:07dbea660864 61 uint8_t crcc = scd.readMeasurement();
loopsva 0:e4e96ef907b2 62 count++;
loopsva 0:e4e96ef907b2 63 if(crcc != scd30::SCDnoERROR) pc.printf("ERROR: %d\r\n", crcc);
loopsva 0:e4e96ef907b2 64 else pc.printf("%5d -> CO2: %9.3f Temp: %7.3f Hum: %5.2f\r\n",
loopsva 1:07dbea660864 65 count, scd.scdSTR.co2f, scd.scdSTR.tempf, scd.scdSTR.humf);
loopsva 1:07dbea660864 66 if((int)scd.scdSTR.co2f > 10000) initSCD30();
loopsva 0:e4e96ef907b2 67 }
loopsva 0:e4e96ef907b2 68 }
loopsva 0:e4e96ef907b2 69 }