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 Volckens Group Sensors

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: