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

Committer:
caseyquinn
Date:
Mon Jun 29 14:32:04 2015 +0000
Revision:
55:f24d70f519cd
Parent:
54:8ee11c9ecd8a
Child:
56:c4d6bdd7c3fb
Updated RTC calls to reflect josh's changes to the library. Added in a hold for large changes in flow to permit the return to original digital pot setting to allow for recovery from temporary flow blockage.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caseyquinn 0:14d46ef4b6cb 1 #include "mbed.h"
caseyquinn 0:14d46ef4b6cb 2 #include "SDFileSystem.h"
caseyquinn 0:14d46ef4b6cb 3 #include "Adafruit_ADS1015.h"
caseyquinn 1:37babeb68ab9 4 #include "MCP40D17.h"
caseyquinn 7:a24d7156bc02 5 #include "STC3100.h"
caseyquinn 10:f9cb61b29340 6 #include "LSM303.h"
caseyquinn 12:8c00a7f5d483 7 #include "BME280.h"
caseyquinn 14:ad550174db8b 8 #include "SI1145.h"
joshuasmth04 40:ef7e1dcb3780 9 #include "NCP5623BMUTBG.h"
joshuasmth04 41:1fb3e0ac6f87 10 #include "CronoDot.h"
caseyquinn 1:37babeb68ab9 11
caseyquinn 1:37babeb68ab9 12 #define SERIAL_BAUD_RATE 9600
joshuasmth04 41:1fb3e0ac6f87 13 #define SCL 20
caseyquinn 7:a24d7156bc02 14 #define SDA 22
lionberg 37:838824df3f5f 15 #define Crono 0xD0 //D0 for the chronoDot
caseyquinn 0:14d46ef4b6cb 16
caseyquinn 0:14d46ef4b6cb 17 I2C i2c(p22, p20);
caseyquinn 0:14d46ef4b6cb 18 Adafruit_ADS1115 ads(&i2c);
caseyquinn 1:37babeb68ab9 19 MCP40D17 DigPot(&i2c);
caseyquinn 12:8c00a7f5d483 20 BME280 bmesensor(p22, p20);
caseyquinn 7:a24d7156bc02 21 STC3100 gasG(p22, p20);
caseyquinn 2:e596e685eb39 22 Serial pc(USBTX, USBRX);
caseyquinn 8:204c21adf693 23 DigitalOut blower(p29, 0);
caseyquinn 17:1baf7cab694e 24 DigitalOut pbKill(p18, 1);
caseyquinn 10:f9cb61b29340 25 LSM303 movementsensor(p22, p20);
caseyquinn 14:ad550174db8b 26 SI1145 lightsensor(p22, p20);
joshuasmth04 40:ef7e1dcb3780 27 NCP5623BMUTBG RGB_LED(p22, p20);
joshuasmth04 41:1fb3e0ac6f87 28 CronoDot RTC(p22, p20);
caseyquinn 0:14d46ef4b6cb 29
lionberg 52:80480b2fafba 30 //UPAS0012 CALIBRATION TRANSFER FUNCTION COEFFICIENTS FROM 'UPAS v2 OSU-calibration primary flow data.xlsx'
lionberg 52:80480b2fafba 31 //mass flow sensor output signal (x) vs. mass flow (y)
lionberg 52:80480b2fafba 32 //y = -0.9198x4 + 4.995x3 - 9.0171x2 + 8.1039x - 2.1758
caseyquinn 55:f24d70f519cd 33 float MF4 = -0.6154;
caseyquinn 55:f24d70f519cd 34 float MF3 = 3.7873;
caseyquinn 55:f24d70f519cd 35 float MF2 = -7.2564;
caseyquinn 55:f24d70f519cd 36 float MF1 = 7.0202;
caseyquinn 55:f24d70f519cd 37 float MF0 = -1.9413;
caseyquinn 54:8ee11c9ecd8a 38
lionberg 52:80480b2fafba 39 //Mass flow sensor polynomial deviation limits
caseyquinn 55:f24d70f519cd 40 float omronVMin = 0.424; //V
caseyquinn 55:f24d70f519cd 41 float omronVMax = 1.8429; //V
caseyquinn 55:f24d70f519cd 42 float omronMFMin = 0.000; //g/L
caseyquinn 55:f24d70f519cd 43 float omronMFMax = 2.958; //g/L
caseyquinn 54:8ee11c9ecd8a 44
lionberg 52:80480b2fafba 45 //DIGITAL POTENTIOSTAT dig-pot vs m_dot POLYNOMIAL TRANSFER FUNCTION COEFFICIENTS FROM 'UPAS v2 OSU-calibration primary flow data.xlsx'
lionberg 52:80480b2fafba 46 //y = 6.2912x4 - 56.643x3 + 195.7x2 - 329.36x + 245.2
caseyquinn 55:f24d70f519cd 47 float DP4 = 5.3839;
caseyquinn 55:f24d70f519cd 48 float DP3 = -51.627;
caseyquinn 55:f24d70f519cd 49 float DP2 = 191.09;
caseyquinn 55:f24d70f519cd 50 float DP1 = -345.9;
caseyquinn 55:f24d70f519cd 51 float DP0 = 277.63;
lionberg 52:80480b2fafba 52
caseyquinn 20:ad9883973d86 53 float press;
caseyquinn 20:ad9883973d86 54 float temp;
caseyquinn 20:ad9883973d86 55 float rh;
caseyquinn 4:69bd7e8a994c 56
caseyquinn 20:ad9883973d86 57 int uv;
caseyquinn 20:ad9883973d86 58 int vis;
caseyquinn 20:ad9883973d86 59 int ir;
caseyquinn 8:204c21adf693 60
caseyquinn 10:f9cb61b29340 61 float accel_x;
caseyquinn 10:f9cb61b29340 62 float accel_y;
caseyquinn 10:f9cb61b29340 63 float accel_z;
lionberg 52:80480b2fafba 64 float accel_comp;
caseyquinn 10:f9cb61b29340 65 float mag_x;
caseyquinn 10:f9cb61b29340 66 float mag_y;
caseyquinn 10:f9cb61b29340 67 float mag_z;
caseyquinn 10:f9cb61b29340 68
caseyquinn 0:14d46ef4b6cb 69 int vInReading;
caseyquinn 0:14d46ef4b6cb 70 int vBlowerReading;
caseyquinn 0:14d46ef4b6cb 71 int omronDiff;
lionberg 52:80480b2fafba 72 float omronVolt; //V
caseyquinn 20:ad9883973d86 73 int omronReading;
lionberg 52:80480b2fafba 74 float atmoRho; //g/L
caseyquinn 49:19e828650618 75
caseyquinn 20:ad9883973d86 76 float massflow; //g/min
caseyquinn 20:ad9883973d86 77 float volflow; //L/min
caseyquinn 55:f24d70f519cd 78 float volflowSet = 1.0; //L/min
caseyquinn 55:f24d70f519cd 79 int logInerval = 5;
joshuasmth04 41:1fb3e0ac6f87 80 float massflowSet;
caseyquinn 42:fc2f2b9f07ae 81 float deltaVflow = 0.0;
caseyquinn 42:fc2f2b9f07ae 82 float deltaMflow = 0.0;
caseyquinn 47:3146e8c949a9 83 float gainFlow;
lionberg 52:80480b2fafba 84 float sampledVol; //L, total sampled volume
caseyquinn 20:ad9883973d86 85
caseyquinn 55:f24d70f519cd 86 int digital_pot_setpoint; //min = 0x7F, max = 0x00
caseyquinn 55:f24d70f519cd 87 int digital_pot_set;
caseyquinn 55:f24d70f519cd 88 int digital_pot_change;
caseyquinn 55:f24d70f519cd 89 int digitalpotMax = 127;
caseyquinn 55:f24d70f519cd 90 int digitalpotMin = 2;
caseyquinn 55:f24d70f519cd 91
caseyquinn 42:fc2f2b9f07ae 92
lionberg 52:80480b2fafba 93 char filename[] = "/sd/UPAS0012LOG000000000000.txt";
caseyquinn 7:a24d7156bc02 94 SDFileSystem sd(SPIS_PSELMOSI, SPIS_PSELMISO, SPIS_PSELSCK, SPIS_PSELSS, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (p12, p13, p15, p14)
caseyquinn 7:a24d7156bc02 95
joshuasmth04 41:1fb3e0ac6f87 96 char Seconds = 0; //Seconds
joshuasmth04 41:1fb3e0ac6f87 97 char Minutes = 0; //Minutes
joshuasmth04 41:1fb3e0ac6f87 98 char Hour = 0; //Hour
joshuasmth04 41:1fb3e0ac6f87 99 char Date = 0; //Date
joshuasmth04 41:1fb3e0ac6f87 100 char Month = 0; //Month
joshuasmth04 41:1fb3e0ac6f87 101 char Year = 0; //Year
caseyquinn 7:a24d7156bc02 102
joshuasmth04 41:1fb3e0ac6f87 103 double secondsD = 0;
joshuasmth04 41:1fb3e0ac6f87 104 char * RTCtime;
caseyquinn 20:ad9883973d86 105
caseyquinn 0:14d46ef4b6cb 106 int main()
caseyquinn 0:14d46ef4b6cb 107 {
lionberg 52:80480b2fafba 108
lionberg 52:80480b2fafba 109 // Setup and Initialization
lionberg 52:80480b2fafba 110 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 111
caseyquinn 47:3146e8c949a9 112 if(volflowSet==1.0){
caseyquinn 47:3146e8c949a9 113 gainFlow = 100;}
caseyquinn 47:3146e8c949a9 114 else if(volflowSet==2.0){
caseyquinn 47:3146e8c949a9 115 gainFlow = 25;}
caseyquinn 47:3146e8c949a9 116 else{
caseyquinn 47:3146e8c949a9 117 gainFlow = 25;}
caseyquinn 47:3146e8c949a9 118
caseyquinn 43:da0708632a21 119 RGB_LED.set_led(1,0,0);
caseyquinn 22:8dd7e0d4c21c 120 press = bmesensor.getPressure();
caseyquinn 22:8dd7e0d4c21c 121 temp = bmesensor.getTemperature();
caseyquinn 22:8dd7e0d4c21c 122 rh = bmesensor.getHumidity();
joshuasmth04 41:1fb3e0ac6f87 123
caseyquinn 22:8dd7e0d4c21c 124 atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
caseyquinn 22:8dd7e0d4c21c 125 massflowSet = volflowSet*atmoRho;
lionberg 26:9cf8e76d8274 126 //Digtal pot tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx
caseyquinn 42:fc2f2b9f07ae 127 digital_pot_setpoint = (int)floor(DP4*pow(massflowSet,4)+DP3*pow(massflowSet,3)+DP2*pow(massflowSet,2)+DP1*massflowSet+DP0); //min = 0x7F, max = 0x00
caseyquinn 46:af5f2d7c158c 128
caseyquinn 55:f24d70f519cd 129 if(digital_pot_setpoint>=digitalpotMax){
caseyquinn 55:f24d70f519cd 130 digital_pot_setpoint = digitalpotMax;
caseyquinn 46:af5f2d7c158c 131 }
caseyquinn 55:f24d70f519cd 132 else if(digital_pot_setpoint<=digitalpotMin){
caseyquinn 55:f24d70f519cd 133 digital_pot_setpoint = digitalpotMin;
caseyquinn 46:af5f2d7c158c 134 }
caseyquinn 46:af5f2d7c158c 135
joshuasmth04 41:1fb3e0ac6f87 136 DigPot.writeRegister(digital_pot_setpoint);
joshuasmth04 41:1fb3e0ac6f87 137 wait(1);
joshuasmth04 41:1fb3e0ac6f87 138 blower = 1;
joshuasmth04 41:1fb3e0ac6f87 139
caseyquinn 55:f24d70f519cd 140 RTC.get_time();
caseyquinn 55:f24d70f519cd 141 sprintf(filename, "/sd/UPAS0012LOG_%02d-%02d-%02d_%02d-%02d-%02d.txt",RTC.year,RTC.month,RTC.date,RTC.hour,RTC.minutes,RTC.seconds);
caseyquinn 17:1baf7cab694e 142 FILE *fp = fopen(filename, "w");
caseyquinn 17:1baf7cab694e 143 fclose(fp);
caseyquinn 49:19e828650618 144 //pc.printf("%d\r\n",digital_pot_setpoint);
caseyquinn 49:19e828650618 145
caseyquinn 49:19e828650618 146 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 147 //Following lines are needed to enter into the initiallization flow control loop
caseyquinn 49:19e828650618 148
caseyquinn 44:096dcb50ff08 149 wait(10);
caseyquinn 49:19e828650618 150
caseyquinn 46:af5f2d7c158c 151 omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V
caseyquinn 43:da0708632a21 152 omronVolt = (omronReading*4.096)/(32768*2);
caseyquinn 49:19e828650618 153 if(omronVolt<=omronVMin){
caseyquinn 49:19e828650618 154 massflow = omronMFMin;
caseyquinn 49:19e828650618 155 }else if(omronVolt>=omronVMax){
caseyquinn 49:19e828650618 156 massflow = omronMFMax;
caseyquinn 46:af5f2d7c158c 157 }else{
caseyquinn 46:af5f2d7c158c 158 massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;}
caseyquinn 46:af5f2d7c158c 159 deltaMflow = massflow-massflowSet;
lionberg 52:80480b2fafba 160 digital_pot_set = digital_pot_setpoint;
caseyquinn 46:af5f2d7c158c 161 wait(5);
caseyquinn 43:da0708632a21 162
caseyquinn 49:19e828650618 163 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 164 //Sets the flow withen +-1.5% of the desired flow rate based on mass flow
caseyquinn 44:096dcb50ff08 165
caseyquinn 44:096dcb50ff08 166 while(abs(deltaMflow)>.015){
caseyquinn 43:da0708632a21 167
caseyquinn 43:da0708632a21 168 omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V
caseyquinn 43:da0708632a21 169 omronVolt = (omronReading*4.096)/(32768*2);
caseyquinn 43:da0708632a21 170 //Mass Flow tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx
caseyquinn 49:19e828650618 171 if(omronVolt<=omronVMin){
caseyquinn 49:19e828650618 172 massflow = omronMFMin;
caseyquinn 49:19e828650618 173 }else if(omronVolt>=omronVMax){
caseyquinn 49:19e828650618 174 massflow = omronMFMax;
caseyquinn 46:af5f2d7c158c 175 }else{
caseyquinn 46:af5f2d7c158c 176 massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;}
caseyquinn 46:af5f2d7c158c 177
caseyquinn 43:da0708632a21 178 atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
caseyquinn 44:096dcb50ff08 179 volflow = massflow/atmoRho;
caseyquinn 43:da0708632a21 180 massflowSet = volflowSet*atmoRho;
caseyquinn 43:da0708632a21 181 deltaMflow = massflow-massflowSet;
caseyquinn 46:af5f2d7c158c 182 //pc.printf("%f,%f,%f,%f,%d,%u,%x\r\n",omronVolt,massflow,massflowSet,deltaMflow,digital_pot_set,digital_pot_set,digital_pot_set);
caseyquinn 55:f24d70f519cd 183 digital_pot_set = (int)(digital_pot_set+(int)((gainFlow*deltaMflow)));
caseyquinn 55:f24d70f519cd 184 if(digital_pot_set>=digitalpotMax){
caseyquinn 55:f24d70f519cd 185 digital_pot_set = digitalpotMax;
caseyquinn 55:f24d70f519cd 186 }else if(digital_pot_set<=digitalpotMin){
caseyquinn 55:f24d70f519cd 187 digital_pot_set = digitalpotMin;
caseyquinn 46:af5f2d7c158c 188 }
caseyquinn 46:af5f2d7c158c 189
caseyquinn 46:af5f2d7c158c 190 wait(2);
caseyquinn 44:096dcb50ff08 191 DigPot.writeRegister(digital_pot_set);
caseyquinn 46:af5f2d7c158c 192 wait(1);
caseyquinn 46:af5f2d7c158c 193
caseyquinn 43:da0708632a21 194
caseyquinn 43:da0708632a21 195 }
lionberg 52:80480b2fafba 196
lionberg 52:80480b2fafba 197 sampledVol = 0.0;
lionberg 52:80480b2fafba 198 RGB_LED.set_led(0,1,0);
caseyquinn 49:19e828650618 199
caseyquinn 49:19e828650618 200 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 201 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 202 //---------------------------------------------------------------------------------------------//
caseyquinn 49:19e828650618 203 // Main Control Loop
caseyquinn 42:fc2f2b9f07ae 204
joshuasmth04 41:1fb3e0ac6f87 205 while(1) {
joshuasmth04 41:1fb3e0ac6f87 206
caseyquinn 46:af5f2d7c158c 207
caseyquinn 55:f24d70f519cd 208 RTC.get_time(); // the way the variable RTCtime works you must save the variables in normal chars or weird things happen
caseyquinn 55:f24d70f519cd 209 Seconds = RTC.seconds;//Seconds
caseyquinn 55:f24d70f519cd 210 Minutes = RTC.minutes;//Minutes
caseyquinn 55:f24d70f519cd 211 Hour = RTC.hour;//Hour
caseyquinn 55:f24d70f519cd 212 Date = RTC.date;//Date
caseyquinn 55:f24d70f519cd 213 Month = RTC.month;//Month
caseyquinn 55:f24d70f519cd 214 Year = RTC.year;//Year
lionberg 37:838824df3f5f 215
caseyquinn 55:f24d70f519cd 216 secondsD = (double)Seconds;
caseyquinn 42:fc2f2b9f07ae 217
lionberg 52:80480b2fafba 218 if(fmod(secondsD,logInerval)==0) {
caseyquinn 42:fc2f2b9f07ae 219
caseyquinn 42:fc2f2b9f07ae 220 omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V
joshuasmth04 41:1fb3e0ac6f87 221 omronVolt = (omronReading*4.096)/(32768*2);
joshuasmth04 41:1fb3e0ac6f87 222
caseyquinn 49:19e828650618 223 if(omronVolt<=omronVMin){
caseyquinn 49:19e828650618 224 massflow = omronMFMin;
caseyquinn 49:19e828650618 225 }else if(omronVolt>=omronVMax){
caseyquinn 49:19e828650618 226 massflow = omronMFMax;
caseyquinn 46:af5f2d7c158c 227 }else{
caseyquinn 46:af5f2d7c158c 228 massflow = MF4*pow(omronVolt,(float)4)+MF3*pow(omronVolt,(float)3)+MF2*pow(omronVolt,(float)2)+MF1*omronVolt+MF0;}
lionberg 52:80480b2fafba 229
joshuasmth04 41:1fb3e0ac6f87 230 atmoRho = ((press-((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)))*100)/(287.0531*(temp+273.15))+((6.1078*pow((float)10,(float)((7.5*temp)/(237.3+temp))))*(rh/100)*100)/(461.4964*(temp+273.15));
joshuasmth04 41:1fb3e0ac6f87 231 volflow = massflow/atmoRho;
lionberg 52:80480b2fafba 232 sampledVol = sampledVol + ((((float)logInerval)/60.0)*volflow);
caseyquinn 42:fc2f2b9f07ae 233 deltaVflow = volflow-volflowSet;
caseyquinn 43:da0708632a21 234 massflowSet = volflowSet*atmoRho;
caseyquinn 43:da0708632a21 235 deltaMflow = massflow-massflowSet;
caseyquinn 46:af5f2d7c158c 236
caseyquinn 44:096dcb50ff08 237 if(abs(deltaMflow)>.025){
caseyquinn 55:f24d70f519cd 238 digital_pot_change = (int)(gainFlow*deltaMflow);
caseyquinn 55:f24d70f519cd 239
caseyquinn 46:af5f2d7c158c 240
caseyquinn 55:f24d70f519cd 241 if(abs(digital_pot_change)>=50){
caseyquinn 46:af5f2d7c158c 242 RGB_LED.set_led(1,0,0);
caseyquinn 55:f24d70f519cd 243 }else if(digital_pot_change+digital_pot_set>=digitalpotMax&abs(digital_pot_change)<50){
caseyquinn 55:f24d70f519cd 244 digital_pot_set = digitalpotMax;
caseyquinn 55:f24d70f519cd 245 RGB_LED.set_led(1,0,0);
caseyquinn 55:f24d70f519cd 246 }else if(digital_pot_change+digital_pot_set<=digitalpotMin&abs(digital_pot_change)<50){
caseyquinn 55:f24d70f519cd 247 digital_pot_set = digitalpotMin;
caseyquinn 46:af5f2d7c158c 248 RGB_LED.set_led(1,0,0);
caseyquinn 46:af5f2d7c158c 249 }else{
caseyquinn 55:f24d70f519cd 250 digital_pot_set = (digital_pot_set+ digital_pot_change);
caseyquinn 46:af5f2d7c158c 251 RGB_LED.set_led(1,1,0);}
caseyquinn 46:af5f2d7c158c 252
caseyquinn 46:af5f2d7c158c 253 DigPot.writeRegister(digital_pot_set);
caseyquinn 46:af5f2d7c158c 254
caseyquinn 46:af5f2d7c158c 255 }else{
caseyquinn 46:af5f2d7c158c 256 RGB_LED.set_led(0,1,0);}
caseyquinn 43:da0708632a21 257
joshuasmth04 41:1fb3e0ac6f87 258 movementsensor.getACCEL();
joshuasmth04 41:1fb3e0ac6f87 259 movementsensor.getCOMPASS();
joshuasmth04 41:1fb3e0ac6f87 260 accel_x = movementsensor.AccelData.x;
joshuasmth04 41:1fb3e0ac6f87 261 accel_y = movementsensor.AccelData.y;
joshuasmth04 41:1fb3e0ac6f87 262 accel_z = movementsensor.AccelData.z;
lionberg 52:80480b2fafba 263 accel_comp = pow(accel_x,(float)2)+pow(accel_y,(float)2)+pow(accel_z,(float)2)-1.0;
joshuasmth04 41:1fb3e0ac6f87 264 mag_x = movementsensor.MagData.x;
joshuasmth04 41:1fb3e0ac6f87 265 mag_y = movementsensor.MagData.y;
joshuasmth04 41:1fb3e0ac6f87 266 mag_z = movementsensor.MagData.z;
caseyquinn 42:fc2f2b9f07ae 267
joshuasmth04 41:1fb3e0ac6f87 268 vInReading = ads.readADC_SingleEnded(1, 0xD583); // read channel 0
joshuasmth04 41:1fb3e0ac6f87 269 vBlowerReading = ads.readADC_SingleEnded(2, 0xE783); // read channel 0
joshuasmth04 41:1fb3e0ac6f87 270 omronDiff = ads.readADC_Differential(0x8583); // differential channel 2-3
joshuasmth04 41:1fb3e0ac6f87 271 press = bmesensor.getPressure();
lionberg 52:80480b2fafba 272 temp = bmesensor.getTemperature()-5.0;
joshuasmth04 41:1fb3e0ac6f87 273 rh = bmesensor.getHumidity();
joshuasmth04 41:1fb3e0ac6f87 274 uv = lightsensor.getUV();
joshuasmth04 41:1fb3e0ac6f87 275 vis = lightsensor.getVIS();
joshuasmth04 41:1fb3e0ac6f87 276 ir = lightsensor.getIR();
lionberg 52:80480b2fafba 277
joshuasmth04 41:1fb3e0ac6f87 278 //Mount the filesystem
caseyquinn 48:b8cbef6aaed2 279 //sd.mount();
joshuasmth04 41:1fb3e0ac6f87 280 FILE *fp = fopen(filename, "a");
lionberg 52:80480b2fafba 281 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\r\n",Year,Month,Date,Hour,Minutes,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);
joshuasmth04 41:1fb3e0ac6f87 282 fclose(fp);
joshuasmth04 41:1fb3e0ac6f87 283 //Unmount the filesystem
caseyquinn 48:b8cbef6aaed2 284 //sd.unmount();
caseyquinn 42:fc2f2b9f07ae 285
joshuasmth04 41:1fb3e0ac6f87 286 wait(1);
joshuasmth04 41:1fb3e0ac6f87 287
caseyquinn 34:481403146690 288 }
caseyquinn 0:14d46ef4b6cb 289 }
caseyquinn 0:14d46ef4b6cb 290 }
caseyquinn 0:14d46ef4b6cb 291
caseyquinn 0:14d46ef4b6cb 292