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:
- 103:a2d7d946d69c
- Parent:
- 102:d25eab697fe0
--- a/main.cpp Fri Jan 15 01:07:14 2016 +0000 +++ b/main.cpp Wed Jan 20 21:05:07 2016 +0000 @@ -65,6 +65,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; @@ -81,6 +84,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; @@ -163,7 +167,7 @@ if(RTC.compare(startAndEndTime[6], startAndEndTime[7], startAndEndTime[8], startAndEndTime[9], startAndEndTime[10], startAndEndTime[11])) { pbKill = 0; // this is were we shut everything down - pc.printf("If you're reading this something has gone very wrong."); + //pc.printf("If you're reading this something has gone very wrong."); } stop.detach(); stop.attach(&check_stop, 9); @@ -174,11 +178,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); @@ -203,17 +223,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); @@ -239,9 +261,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); + } /*EEPROM ADDRESSING: @@ -407,7 +436,7 @@ E2PROM.read(0x00014,logIntervalReadOut,1); logInerval = logIntervalReadOut[0]; - pc.printf("You're done, you can now disconect the USB cable.\r\n"); + //pc.printf("You're done, you can now disconect the USB cable.\r\n"); RunReady = 0;