PM and CO sensor log data
Dependencies: Pulse SDFileSystem mbed
main.cpp@0:5564c47f0add, 2014-12-27 (annotated)
- Committer:
- dinesh4619
- Date:
- Sat Dec 27 20:34:34 2014 +0000
- Revision:
- 0:5564c47f0add
test code ARM IoT contest-accs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dinesh4619 | 0:5564c47f0add | 1 | #include "mbed.h" |
dinesh4619 | 0:5564c47f0add | 2 | #include "Pulse.h" |
dinesh4619 | 0:5564c47f0add | 3 | #include "SDFileSystem.h" |
dinesh4619 | 0:5564c47f0add | 4 | |
dinesh4619 | 0:5564c47f0add | 5 | //SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); // the pinout on the mbed Cool Components workshop board |
dinesh4619 | 0:5564c47f0add | 6 | SDFileSystem sd(p5, p6, p7, p26, "sd"); |
dinesh4619 | 0:5564c47f0add | 7 | |
dinesh4619 | 0:5564c47f0add | 8 | AnalogIn sense(p15); |
dinesh4619 | 0:5564c47f0add | 9 | PulseInOut pulse1(p8); |
dinesh4619 | 0:5564c47f0add | 10 | DigitalOut output1(LED1); |
dinesh4619 | 0:5564c47f0add | 11 | Serial pc(USBTX, USBRX); |
dinesh4619 | 0:5564c47f0add | 12 | |
dinesh4619 | 0:5564c47f0add | 13 | |
dinesh4619 | 0:5564c47f0add | 14 | //pc.baud(9600); |
dinesh4619 | 0:5564c47f0add | 15 | //Serial async_port(PTA2,PTA1); |
dinesh4619 | 0:5564c47f0add | 16 | |
dinesh4619 | 0:5564c47f0add | 17 | unsigned long duration; |
dinesh4619 | 0:5564c47f0add | 18 | unsigned long starttime; |
dinesh4619 | 0:5564c47f0add | 19 | unsigned long sampletime_ms = 30000;//sampe 30s ; |
dinesh4619 | 0:5564c47f0add | 20 | unsigned long lowpulseoccupancy = 0; |
dinesh4619 | 0:5564c47f0add | 21 | float ratio = 0; |
dinesh4619 | 0:5564c47f0add | 22 | float concentration = 0; |
dinesh4619 | 0:5564c47f0add | 23 | |
dinesh4619 | 0:5564c47f0add | 24 | Timer t1; // define timer object |
dinesh4619 | 0:5564c47f0add | 25 | void task1(void); // task function prototype |
dinesh4619 | 0:5564c47f0add | 26 | |
dinesh4619 | 0:5564c47f0add | 27 | int main() |
dinesh4619 | 0:5564c47f0add | 28 | { |
dinesh4619 | 0:5564c47f0add | 29 | mkdir("/sd/mydir", 0777); |
dinesh4619 | 0:5564c47f0add | 30 | t1.start(); // start timer counting |
dinesh4619 | 0:5564c47f0add | 31 | starttime=t1.read_ms(); |
dinesh4619 | 0:5564c47f0add | 32 | while(1) { |
dinesh4619 | 0:5564c47f0add | 33 | duration=pulse1.read_low_us(); |
dinesh4619 | 0:5564c47f0add | 34 | lowpulseoccupancy = lowpulseoccupancy+duration; |
dinesh4619 | 0:5564c47f0add | 35 | if ((t1.read_ms()-starttime) > sampletime_ms) // read time in ms |
dinesh4619 | 0:5564c47f0add | 36 | { |
dinesh4619 | 0:5564c47f0add | 37 | pc.printf("Sensor value: %f \n\r", sense.read()); |
dinesh4619 | 0:5564c47f0add | 38 | pc.printf("Before Task\n\r"); |
dinesh4619 | 0:5564c47f0add | 39 | pc.printf("\n Duration=%lu,Low Pulse Occupancy=%lu,starttime=%lu\n\r",duration,lowpulseoccupancy,starttime); |
dinesh4619 | 0:5564c47f0add | 40 | task1(); // call task function |
dinesh4619 | 0:5564c47f0add | 41 | FILE *fp = fopen("/sd/mydir/sdtest.txt", "a+"); |
dinesh4619 | 0:5564c47f0add | 42 | if(fp == NULL) { |
dinesh4619 | 0:5564c47f0add | 43 | error("Could not open file for write\n"); |
dinesh4619 | 0:5564c47f0add | 44 | } |
dinesh4619 | 0:5564c47f0add | 45 | fprintf(fp, "Sensor value:%f,Low Pulse Occupancy=%lu,Time: %lu",sense.read(),lowpulseoccupancy,starttime); |
dinesh4619 | 0:5564c47f0add | 46 | //pc.printf("\n Sensor value:%f",sense.read()); |
dinesh4619 | 0:5564c47f0add | 47 | fclose(fp); |
dinesh4619 | 0:5564c47f0add | 48 | lowpulseoccupancy = 0; |
dinesh4619 | 0:5564c47f0add | 49 | |
dinesh4619 | 0:5564c47f0add | 50 | } |
dinesh4619 | 0:5564c47f0add | 51 | } |
dinesh4619 | 0:5564c47f0add | 52 | } |
dinesh4619 | 0:5564c47f0add | 53 | void task1(void) |
dinesh4619 | 0:5564c47f0add | 54 | { |
dinesh4619 | 0:5564c47f0add | 55 | ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100 |
dinesh4619 | 0:5564c47f0add | 56 | concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve |
dinesh4619 | 0:5564c47f0add | 57 | pc.printf("After Task\n\r"); |
dinesh4619 | 0:5564c47f0add | 58 | pc.printf("\n Low pulse occupancy=%lu",lowpulseoccupancy); |
dinesh4619 | 0:5564c47f0add | 59 | pc.printf(","); |
dinesh4619 | 0:5564c47f0add | 60 | pc.printf("Ratio=%f",ratio); |
dinesh4619 | 0:5564c47f0add | 61 | pc.printf(","); |
dinesh4619 | 0:5564c47f0add | 62 | pc.printf("Concentration=%f\n\r",concentration); |
dinesh4619 | 0:5564c47f0add | 63 | |
dinesh4619 | 0:5564c47f0add | 64 | starttime = t1.read_ms(); |
dinesh4619 | 0:5564c47f0add | 65 | output1=!output1; // toggle output |
dinesh4619 | 0:5564c47f0add | 66 | |
dinesh4619 | 0:5564c47f0add | 67 | } |