scott kelleher / Outdoor_UPAS_v1_2_powerfunction

Dependencies:   ADS1115 BME280 CronoDot SDFileSystem mbed

Fork of Outdoor_UPAS_v1_2_Tboard by scott kelleher

Files at this revision

API Documentation at this revision

Comitter:
caseyquinn
Date:
Wed Mar 02 17:16:43 2016 +0000
Parent:
8:c4a8f9b67cee
Child:
10:06fbb1c9e3bd
Commit message:
General code cleaning and also added in the chronodot RTC into the log file for now.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Mar 02 16:49:59 2016 +0000
+++ b/main.cpp	Wed Mar 02 17:16:43 2016 +0000
@@ -34,10 +34,10 @@
 //DigitalOut          GPS_EN(p4,0);       //pin 4 is used to enable and disable the GPS, in order to recive serial communications
 Calibration         calibrations(1);     //Default serial/calibration if there are no values for the selected option
 
-Timeout         stop;     //This is the stop callback object
-//Timeout         logg;   
+
+Ticker          stop;     //This is the stop callback object
 Ticker          logg;     //This is the logging callback object
-Ticker          flowCtl;    //This is the control loop callback object
+Ticker          flowCtl;  //This is the control loop callback object
 
 uint16_t serial_num = 1;                // Default serial/calibration number
 int RunReady =0;
@@ -45,69 +45,64 @@
 struct tm STtime;
 char timestr[32];
 
-float press = 1.1;
-float temp = 75.5;
-float rh = 12.1;
+float press;
+float temp;
+float rh;
 
-int uv = 8;
-int vis = 7;
-int ir = 6;
+int uv;
+int vis;
+int ir;
 
-float compass = 0.1;
-float accel_x = 0.2;
-float accel_y = 0.3;
-float accel_z = 0.4;
-float accel_comp = 0.5;
-float angle_x = 0.6;
-float angle_y = 0.7;
-float angle_z = 0.8;
-float mag_x = 0.9;
-float mag_y = 1.0;
-float mag_z = 1.2;
+float compass;
+float accel_x;
+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;
 
-int vInReading = 18;
-int vBlowerReading = 19;
-int omronDiff = 20;
-float omronVolt = 1.2; //V
-int omronReading = 100;
-float atmoRho = 1.5; //g/L
+int vInReading;
+int vBlowerReading;
+int omronDiff;
+float omronVolt; //V
+int omronReading;
+float atmoRho; //g/L
 
-float massflow = 87.6; //g/min
-float volflow = 88.8; //L/min
+float massflow; //g/min
+float volflow; //L/min
 float volflowSet = 1.0; //L/min
 int   logInerval = 10; //seconds
 double secondsD = 0;
 double lastsecondD = 0;
-float massflowSet = 19.2;
+float massflowSet;
 float deltaVflow = 0.0;
 float deltaMflow = 0.0;
-float gainFlow = 98.1;
-float sampledVol = 2.0; //L, total sampled volume
+float gainFlow;
+float sampledVol; //L, total sampled volume
 
-int digital_pot_setpoint = 5 ; //min = 0x7F, max = 0x00
-int digital_pot_set = 6;
-int digital_pot_change = 7;
+int digital_pot_setpoint; //min = 0x7F, max = 0x00
+int digital_pot_set;
+int digital_pot_change;
 int digitalpotMax = 127;
-int digitalpotMin = 2;
+int digitalpotMin = 10;
 
 int dutyUp = 4;
 int dutyDown = 3;
 
 // variables are only place holders for the US_Menu //
-int refreshtime = 6;
+int refreshtime;
 //int refresh_Time = 10;   // refresh time in s, note calling read_GPS()(or similar) will still take how ever long it needs(hopefully < 1s)
 float home_lat, home_lon, work_lat, work_lon;
 //*************************************************//
 
-
-
 char filename[] = "/sd/XXXX0000LOG000000000000---------------.txt";
-
 SDFileSystem sd(D4, D5, D3, D10, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (MOSI, MISO, SCK, SEL)
 
 void sendData(); 
-
-
 static uint8_t rx_buf[20];
 static uint8_t rx_len=0;
 static int haltBLE = 1;
@@ -117,7 +112,11 @@
 static int runReady = 0;
 static uint8_t startAndEndTime[12] = {0,};
 
-void uartMicro(void){
+//////////////////////////////////////////////////////////////
+//BLE Functions
+//////////////////////////////////////////////////////////////
+
+void uartMicro(){
     if(runReady!=1){
         haltBLE = 2;
         while(microChannel.readable()){
@@ -236,27 +235,32 @@
     
 } 
 
-
+//////////////////////////////////////////////////////////////
+//Shutdown Function
+//////////////////////////////////////////////////////////////
 void check_stop()   // this checks if it's time to stop and shutdown
 {
-    
+    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+    //UPDATE THIS TO WORK WITH ST RTC INSTEAD
+    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     if(RTC_UPAS.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.");
     }
-    stop.detach();
-    stop.attach(&check_stop, 9);
     
 }
 
-
+//////////////////////////////////////////////////////////////
+//SD Logging Function
+//////////////////////////////////////////////////////////////
 void log_data()
 {
 
-        RGB_LED.set_led(1,1,0);
+    RGB_LED.set_led(1,1,0);
         
     time_t seconds = time(NULL);
     strftime(timestr, 32, "%y%m%d%H%M%S", localtime(&seconds));
+    RTC_UPAS.get_time(); 
     press = bmesensor.getPressure();
     temp = bmesensor.getTemperature()-5.0;
     rh = bmesensor.getHumidity();
@@ -264,9 +268,7 @@
         
     
     FILE *fp = fopen(filename, "a");
-    //fprintf(fp, "Time as a basic string = %s\r\n", ctime(&seconds));
-    //fprintf(fp, "Time as a basic string = %s\r\n", timestr);
-    //fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC_UPAS.year, RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds);
+    fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC_UPAS.year, RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds);
     fprintf(fp, "%s,", timestr);
     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);
@@ -279,6 +281,9 @@
 
 }
 
+//////////////////////////////////////////////////////////////
+//Flow Control Function
+//////////////////////////////////////////////////////////////
 void flowControl()
 {
         RGB_LED.set_led(0,1,0);
@@ -326,6 +331,10 @@
             //RGB_LED.set_led(0,1,0);
         }
 }
+
+//////////////////////////////////////////////////////////////
+//Main Function
+//////////////////////////////////////////////////////////////
 int main(){
 
     //wait(10);
@@ -352,7 +361,6 @@
     //pc.attach(pc_recv);
     microChannel.attach(uartMicro,microChannel.RxIrq);
     microChannel.baud(115200);  
-    //RGB_LED.set_led(1,0,0);
     microChannel.printf("$$$");
     wait(0.5);
     microChannel.printf("SN,");
@@ -375,7 +383,6 @@
     }
     
 
-    //wait(1);
     
     E2PROM.read(0x00015, startAndEndTime, 12); //Grab start and end times from EEPROM
     RGB_LED.set_led(0,1,0);
@@ -423,9 +430,6 @@
 
     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));
     massflowSet = volflowSet*atmoRho;
-    //Digtal pot tf from file: UPAS v2 OSU-PrimaryFlowData FullSet 2015-05-29 CQ mods.xlsx
-
-
 
 
     DigPot.writeRegister(digital_pot_setpoint);
@@ -434,22 +438,19 @@
 
     uint8_t subjectLabelOriginal[8] = {0,};
     E2PROM.read(0x00001, subjectLabelOriginal,8); 
-    //sprintf(filename, "/sd/UPAS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]);
     
     time_t seconds = time(NULL);
     strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds));
+    //sprintf(filename, "/sd/UPAS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]);
     sprintf(filename, "/sd/UPASboardtest_%s.txt", timestr);
     FILE *fp = fopen(filename, "w");
     fclose(fp);
 
-    //---------------------------------------------------------------------------------------------//
-    //Following lines are needed to enter into the initiallization flow control loop
-
 
     sampledVol = 0.0;
     RGB_LED.set_led(0,1,0);
-    //log_data();
-    stop.attach(&check_stop, 31);    // check if we should shut down every 9 seconds, starting 60s after the start.
+
+    stop.attach(&check_stop, 9);    // check if we should shut down every 9 number seconds, starting after the start.
     logg.attach(&log_data, logInerval);
     flowCtl.attach(&flowControl, 1);