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:
Tue Jun 30 03:33:36 2015 +0000
Revision:
56:c4d6bdd7c3fb
Parent:
55:f24d70f519cd
Child:
57:0b554f7aa9a3
Set gas gauge to reset when the UPAS is turned on.

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