Wim Dejonghe
/
scd30_HelloWorld
SCD30 test van Dhr Dejonghe
main.cpp@2:7d93889ab88b, 2022-03-31 (annotated)
- Committer:
- WimDejonghe
- Date:
- Thu Mar 31 09:00:38 2022 +0000
- Revision:
- 2:7d93889ab88b
- Parent:
- 1:07dbea660864
DejongheSCD30
Who changed what in which revision?
User | Revision | Line number | New 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 | } |