Code supports writing to the SD card as well as working with the Volckens group smartphone apps for the mbed HRM1017
Dependencies: ADS1115 BLE_API BME280 Calibration CronoDot EEPROM LSM303 MCP40D17 NCP5623BMUTBG SDFileSystem SI1145 STC3100 mbed nRF51822
Fork of UPAS_BLE_and_USB by
Diff: main.cpp
- Revision:
- 105:f3be9e0314f7
- Parent:
- 104:c57913399e79
- Child:
- 106:3911b3c7a24e
--- a/main.cpp Fri Jan 22 00:58:59 2016 +0000 +++ b/main.cpp Fri Jan 22 02:19:28 2016 +0000 @@ -64,6 +64,9 @@ float accel_y; float accel_z; float accel_comp; +float angle_x; +float angle_y; +float angle_z; float mag_x; float mag_y; float mag_z; @@ -80,6 +83,7 @@ float volflowSet = 1.0; //L/min int logInerval = 10; //seconds double secondsD = 0; +double lastsecondD = 0; float massflowSet; float deltaVflow = 0.0; float deltaMflow = 0.0; @@ -176,11 +180,27 @@ void log_data() { logg.detach(); - logg.attach(&log_data, logInerval); // reading and logging data must take significintly less than 0.5s. This can be increased. - + RTC.get_time(); - + + //*****************************************// + //RTC.get_time(); //debug + //pc.printf("%02d:%02d:%02d on %d/%d/%d before fmod \r\n",RTC.hour, RTC.minutes, RTC.seconds, RTC.month, RTC.date, RTC.year);//debug + //*****************************************// + secondsD = RTC.seconds; + + while(fmod(secondsD,logInerval)!=0 || floor(secondsD)==floor(lastsecondD)) { + //pc.printf("%f, %f\r\n", floor(secondsD), floor(lastsecondD)); + RTC.get_time(); + secondsD = RTC.seconds; + wait_ms(100); + } + lastsecondD = secondsD; + //*****************************************// + //RTC.get_time(); //debug + //pc.printf("%02d:%02d:%02d on %d/%d/%d after fmod \r\n",RTC.hour, RTC.minutes, RTC.seconds, RTC.month, RTC.date, RTC.year);//debug + //*****************************************// omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V omronVolt = (omronReading*4.096)/(32768*2); @@ -205,17 +225,19 @@ if(abs(digital_pot_change)>=50) { digital_pot_set = (int)(digital_pot_set+(int)((10.0*deltaMflow))); RGB_LED.set_led(1,0,0); - - } else if(digital_pot_change+digital_pot_set>=digitalpotMax&abs(digital_pot_change)<50) { - digital_pot_set = digitalpotMax; - RGB_LED.set_led(1,0,0); - } else if(digital_pot_change+digital_pot_set<=digitalpotMin&abs(digital_pot_change)<50) { - digital_pot_set = digitalpotMin; - RGB_LED.set_led(1,0,0); - } else { + } else { digital_pot_set = (digital_pot_set+ digital_pot_change); RGB_LED.set_led(1,1,0); } + + if(digital_pot_set>=digitalpotMax) { + digital_pot_set = digitalpotMax; + RGB_LED.set_led(1,0,0); + } else if(digital_pot_set<=digitalpotMin) { + digital_pot_set = digitalpotMin; + RGB_LED.set_led(1,0,0); + } + DigPot.writeRegister(digital_pot_set); @@ -241,9 +263,16 @@ uv = lightsensor.getUV(); vis = lightsensor.getVIS(); ir = lightsensor.getIR(); + FILE *fp = fopen(filename, "a"); - fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,%1.3f,%1.3f,%2.2f,%4.2f,%2.1f,%1.3f,%1.3f,%5.1f,%1.1f,%1.1f,%1.1f,%1.1f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%1.3f,%1.3f,%f\r\n",RTC.year, RTC.month,RTC.date,RTC.hour,RTC.minutes,RTC.seconds,omronVolt,massflow,temp,press,rh,atmoRho,volflow,sampledVol,accel_x,accel_y,accel_z,accel_comp,uv,omronReading, vInReading, vBlowerReading, omronDiff,gasG.getAmps(), gasG.getVolts(), gasG.getCharge(),digital_pot_set, deltaMflow, deltaVflow, compass); + fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC.year, RTC.month,RTC.date,RTC.hour,RTC.minutes,RTC.seconds); + fprintf(fp, "%1.3f,%1.3f,%2.2f,%4.2f,%2.1f,%1.3f,", omronVolt,massflow,temp,press,rh,atmoRho); + fprintf(fp, "%1.3f,%5.1f,%1.1f,%1.1f,%1.1f,%1.1f,", volflow, sampledVol, accel_x, accel_y, accel_z, accel_comp); + fprintf(fp, "%.1f,%.1f,%.1f,%.3f,%.3f,%.3f,%.1f,", angle_x,angle_y,angle_z,mag_x, mag_y, mag_z,compass); + fprintf(fp, "%d,%d,%d,%d,%d,%d," ,uv,omronReading, vInReading, vBlowerReading, omronDiff,gasG.getAmps()); + fprintf(fp, "%d,%d,%d,%1.3f,%1.3f\r\n", gasG.getVolts(), gasG.getCharge(),digital_pot_set, deltaMflow, deltaVflow); fclose(fp); + //wait_ms(5); } /*EEPROM ADDRESSING: