Seeed
/
seeed-grove-dust-sensor-PPD42NS
Seeed Grove Dust Sensor PPD42NS http://wiki.seeed.cc/Grove-Dust_Sensor/
main.cpp@0:8dd765fb7e02, 2018-03-09 (annotated)
- Committer:
- mbedAustin
- Date:
- Fri Mar 09 06:57:34 2018 +0000
- Revision:
- 0:8dd765fb7e02
Initial Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedAustin | 0:8dd765fb7e02 | 1 | #include "mbed.h" |
mbedAustin | 0:8dd765fb7e02 | 2 | #include "math.h" |
mbedAustin | 0:8dd765fb7e02 | 3 | |
mbedAustin | 0:8dd765fb7e02 | 4 | // Measure duration of time that the signal is low in a 30sec period. |
mbedAustin | 0:8dd765fb7e02 | 5 | |
mbedAustin | 0:8dd765fb7e02 | 6 | InterruptIn input(PA_0); // Change your pin name here |
mbedAustin | 0:8dd765fb7e02 | 7 | Timer t; // measure amount of time signal is low |
mbedAustin | 0:8dd765fb7e02 | 8 | Ticker m; // every 30 seconds calculate measurement |
mbedAustin | 0:8dd765fb7e02 | 9 | |
mbedAustin | 0:8dd765fb7e02 | 10 | // Start Timer |
mbedAustin | 0:8dd765fb7e02 | 11 | void start(void){ |
mbedAustin | 0:8dd765fb7e02 | 12 | t.start(); |
mbedAustin | 0:8dd765fb7e02 | 13 | } |
mbedAustin | 0:8dd765fb7e02 | 14 | |
mbedAustin | 0:8dd765fb7e02 | 15 | // Stop TImer |
mbedAustin | 0:8dd765fb7e02 | 16 | void stop(void){ |
mbedAustin | 0:8dd765fb7e02 | 17 | t.stop(); |
mbedAustin | 0:8dd765fb7e02 | 18 | } |
mbedAustin | 0:8dd765fb7e02 | 19 | |
mbedAustin | 0:8dd765fb7e02 | 20 | // calculate sensor value |
mbedAustin | 0:8dd765fb7e02 | 21 | void calculate(){ |
mbedAustin | 0:8dd765fb7e02 | 22 | // run measurements |
mbedAustin | 0:8dd765fb7e02 | 23 | int lpo = t.read_us(); |
mbedAustin | 0:8dd765fb7e02 | 24 | float ratio = t.read_us()/(30000*10.0); |
mbedAustin | 0:8dd765fb7e02 | 25 | float concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; |
mbedAustin | 0:8dd765fb7e02 | 26 | printf("\r\nlpo = %d, r = %f, c = %f pcs/0.01cf\r\n",lpo,ratio,concentration); |
mbedAustin | 0:8dd765fb7e02 | 27 | |
mbedAustin | 0:8dd765fb7e02 | 28 | // reset and run sensors |
mbedAustin | 0:8dd765fb7e02 | 29 | t.reset(); // reset mesurement every 30 seconds |
mbedAustin | 0:8dd765fb7e02 | 30 | input.fall(&start); // start measuring when signal is low |
mbedAustin | 0:8dd765fb7e02 | 31 | input.rise(&stop); // stop measuring when signal is high |
mbedAustin | 0:8dd765fb7e02 | 32 | } |
mbedAustin | 0:8dd765fb7e02 | 33 | |
mbedAustin | 0:8dd765fb7e02 | 34 | int main(){ |
mbedAustin | 0:8dd765fb7e02 | 35 | printf("\r\n Starting...\r\n"); |
mbedAustin | 0:8dd765fb7e02 | 36 | m.attach(&calculate,30.0); // measure for 30 seconds |
mbedAustin | 0:8dd765fb7e02 | 37 | while(1){ |
mbedAustin | 0:8dd765fb7e02 | 38 | ; |
mbedAustin | 0:8dd765fb7e02 | 39 | } |
mbedAustin | 0:8dd765fb7e02 | 40 | } |