PM and CO sensor log data

Dependencies:   Pulse SDFileSystem mbed

main.cpp

Committer:
dinesh4619
Date:
2014-12-27
Revision:
0:5564c47f0add

File content as of revision 0:5564c47f0add:

#include "mbed.h"
#include "Pulse.h"
#include "SDFileSystem.h"
 
//SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); // the pinout on the mbed Cool Components workshop board
SDFileSystem sd(p5, p6, p7, p26, "sd");

AnalogIn sense(p15);
PulseInOut pulse1(p8);
DigitalOut output1(LED1);
Serial pc(USBTX, USBRX);


//pc.baud(9600);
//Serial async_port(PTA2,PTA1);

unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;

Timer t1; // define timer object
void task1(void); // task function prototype

int main() 
 {
      mkdir("/sd/mydir", 0777);
 t1.start(); // start timer counting
 starttime=t1.read_ms();
  while(1) {
    duration=pulse1.read_low_us();
    lowpulseoccupancy = lowpulseoccupancy+duration;
if ((t1.read_ms()-starttime) > sampletime_ms) // read time in ms
 {
     pc.printf("Sensor value: %f \n\r", sense.read());
     pc.printf("Before Task\n\r");
     pc.printf("\n Duration=%lu,Low Pulse Occupancy=%lu,starttime=%lu\n\r",duration,lowpulseoccupancy,starttime);
 task1(); // call task function
     FILE *fp = fopen("/sd/mydir/sdtest.txt", "a+");
        if(fp == NULL) {
        error("Could not open file for write\n");
    }
    fprintf(fp, "Sensor value:%f,Low Pulse Occupancy=%lu,Time: %lu",sense.read(),lowpulseoccupancy,starttime);
    //pc.printf("\n Sensor value:%f",sense.read());
    fclose(fp); 
    lowpulseoccupancy = 0;

 }
 }
}
void task1(void)
{ 
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
    pc.printf("After Task\n\r");
    pc.printf("\n Low pulse occupancy=%lu",lowpulseoccupancy);
    pc.printf(",");
    pc.printf("Ratio=%f",ratio);
    pc.printf(",");
    pc.printf("Concentration=%f\n\r",concentration);
    
    starttime = t1.read_ms();
    output1=!output1; // toggle output
    
}