attempt to fix posible power issues with the sharp

Dependencies:   ADS1115 BME280 CronoDot SDFileSystem mbed

Fork of Outdoor_UPAS_v1_2_Tboard by scott kelleher

Revision:
27:922f53fa649c
Parent:
26:6aa294d83af4
Child:
28:42932d3b105d
Child:
31:aea6bfaefa0f
--- a/main.cpp	Wed Apr 20 16:47:28 2016 +0000
+++ b/main.cpp	Thu Apr 21 18:22:47 2016 +0000
@@ -93,7 +93,7 @@
 /////////////////////////////////////////////
 char filename[] = "/sd/XXXX0000LOG000000000000---------------.txt";
 SDFileSystem sd(PB_5, PB_4, PB_3, PB_6, "sd");//(D4, D5, D3, D10, "sd"); // (MOSI, MISO, SCK, SEL)
-DigitalIn    sdCD(PA_11);
+DigitalIn    sdCD(PA_11, PullUp);
 
 /////////////////////////////////////////////
 //Callbacks
@@ -166,18 +166,12 @@
 int dutyUp;
 int dutyDown;
 
-float flat = 0;
-float flon = 0;
-
 bool    gpsFix;
 uint8_t gpssatellites = 0;
 double  gpsspeed = 0.0;
 double  gpslatitude = 0.0;
 double  gpslongitude = 0.0;
 float   gpsaltitude = 0.0;
-char    gpslat = 'W';
-char    gpslon = 'N';
-
 
 float home_lat  = 40.00000;    //40.580508;
 float home_lon  = -105.000000; //-105.081823;
@@ -317,6 +311,7 @@
 
 void sendData(){
     
+    //First byte is designator for the App
     uint8_t sampleTimePassValues[13] = {0x01,0x00,0x00,0x0A,0x01,0x01,0x10,0x00,0x00,0x0A,0x01,0x01,0x10};
     uint8_t subjectLabelOriginal[9] = {0x02,0x52,0x45,0x53,0x45,0x54,0x5F,0x5F,0x5f};
     uint8_t dataLogOriginal[2] = {0x03,0x0A,};
@@ -376,31 +371,11 @@
 }
 
 //////////////////////////////////////////////////////////////
-// GPS: Degree-minute format to decimal-degrees
-//////////////////////////////////////////////////////////////
-double convertDegMinToDecDeg (float degMin)
-{
-    double min = 0.0;
-    double decDeg = 0.0;
-
-    //get the minutes, fmod() requires double
-    min = fmod((double)degMin, 100.0);
-
-    //rebuild coordinates in decimal degrees
-    degMin = (int) ( degMin / 100 );
-    decDeg = degMin + ( min / 60 );
-
-    return decDeg;
-}
-
-//////////////////////////////////////////////////////////////
 // GPS: Calculate distance from target location
 //////////////////////////////////////////////////////////////
 double GPSdistanceCalc (float tlat, float tlon)
 {
     
-
-
 float tlatrad, flatrad;
 float sdlong,  cdlong;
 float sflat, cflat;
@@ -408,10 +383,10 @@
 float delta, denom;
 
     double distance;
-    delta = (flon-tlon)*0.0174532925;
+    delta = (gpslongitude-tlon)*0.0174532925;
     sdlong = sin(delta);
     cdlong = cos(delta);
-    flatrad = (flat)*0.0174532925;
+    flatrad = (gpslatitude)*0.0174532925;
     tlatrad = (tlat)*0.0174532925;
     sflat = sin(flatrad);
     cflat = cos(flatrad);
@@ -457,8 +432,6 @@
 
     RTC_UPAS.get_time(); 
     
-    
-   
     press = bmesensor.getPressure();
     temp = bmesensor.getTemperature()-5.0;
     rh = bmesensor.getHumidity();
@@ -477,10 +450,10 @@
     vInReading = ads.readADC_SingleEnded(1, 0xD583); // read channel 0
     
     if(vInReading > 5950 && amps > 8191) {
-        pumps = 0;
+        //pumps = 0;
         wait(1);
     } else if(pumps == 0 && amps < 8191) {
-        pumps = 1;
+        //pumps = 1;
     }
           
     amps = gasG.getAmps();
@@ -512,79 +485,36 @@
     }
     
     //if(gpsEN ==1){  
-     /* 
-        if(gpsFix){
-            RGB_LED.set_led(1,1,1);
-        }else{
-            RGB_LED.set_led(1,0,0);
-        }
-       */
+    
         gpsFix = gps.read(1);
-        //RGB_LED.set_led(1,1,0);
         gpsspeed = gps.speed;
         gpssatellites =  gps.satellites;
         gpslatitude = gps.lat;
-       // gpslat = 'N'; //gps.lat; need to fix this (if statement?)
         gpslongitude = gps.lon;
-       // gpslon = 'W'; //gps.lon; need to fix this (if statement?)
         gpsaltitude = gps.altitude;
-        
-           /*
-            if (abs(gpslatitude) > 0 && abs(gpslongitude) > 0) {
       
-            if(gpslat == 'S')
-              {
-              flat = convertDegMinToDecDeg (gpslatitude) * -1;
-              }
-              else
-              {
-              flat = convertDegMinToDecDeg (gpslatitude);
-              }
-              
-              if(gpslon == 'W')
-              {
-              flon = convertDegMinToDecDeg (gpslongitude) * -1;
-              }
-              else
-              {
-              flon = convertDegMinToDecDeg (gpslongitude);
-              }
-          
-                workDistance = GPSdistanceCalc (work_lat, work_lon);
-                homeDistance = GPSdistanceCalc (home_lat, home_lon);
-              }
-              
-              if (homeDistance == 99999 && workDistance == 99999) {
-            //    digitalWrite (work_yellow_led, HIGH);
-            //    digitalWrite (home_green_led, HIGH);
-            //    digitalWrite (travel_red_led, HIGH);
+        if(gpsFix){
+            workDistance = GPSdistanceCalc (work_lat, work_lon);
+            homeDistance = GPSdistanceCalc (home_lat, home_lon);
+            
+            if(workDistance < 50) {
+                    location = 1;
+                    RGB_LED.set_led(0,1,1);
+            }else if(homeDistance < 20) { // 25 or 30 m instead?
+                    location = 2;
+                    RGB_LED.set_led(1,0,1);
+            }else{
+                    location = 3;
+                    RGB_LED.set_led(1,1,1);
+                  }
+        
+        }else if(homeDistance == 99999 && workDistance == 99999){
                 location = 0;
-              }
-              
-              else if (workDistance < 30) {
-            //    digitalWrite (work_yellow_led, HIGH);
-            //    digitalWrite (home_green_led, LOW);
-            //    digitalWrite (travel_red_led, LOW);
-                location = 1;
-              }
-               
-              else if (homeDistance < 20) {
-            //    digitalWrite (work_yellow_led, LOW);
-            //    digitalWrite (home_green_led, HIGH);
-            //    digitalWrite (travel_red_led, LOW);
-                location = 2;
-              }
-              
-              else {
-            //    digitalWrite (work_yellow_led, LOW);
-            //    digitalWrite (home_green_led, LOW);
-            //    digitalWrite (travel_red_led, HIGH);
-                location = 3;
-              }
-                
-    
-}
-*/ 
+                RGB_LED.set_led(1,1,0);
+        }
+   
+//}
+
    
     FILE *fp = fopen(filename, "a");
     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);
@@ -594,7 +524,9 @@
     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,amps);
     fprintf(fp, "%d,%d,%d,%1.3f,%1.3f,", bVolt, bFuel,digital_pot_set, deltaMflow, deltaVflow);
-    fprintf(fp, "%f,%f,%06d,%06d,%f,%d,%f,%d,%d\r\n",  gpslatitude, gpslongitude, (long)gps.date, (long)gps.utc, gpsspeed, gpssatellites,  gpsaltitude, gpsFix, pumps == 1); // test and add in speed, etc that Josh added in to match the adafruit GPS
+    fprintf(fp, "%f,%f,%06d,%06d,", gpslatitude, gpslongitude, (long)gps.date, (long)gps.utc); 
+    fprintf(fp, "%f,%d,%f,%d,", gpsspeed, gpssatellites,  gpsaltitude, gpsFix);
+    fprintf(fp, "%f,%f,%d,%d\r\n", homeDistance, workDistance, location, pumps == 1); // test and add in speed, etc that Josh added in to match the adafruit GPS
     fclose(fp);
     free(fp);
     
@@ -677,10 +609,20 @@
 //Main Function
 //////////////////////////////////////////////////////////////
 int main(){
-   
+    
     RGB_LED.set_led(0,0,1);
     
-
+    /*
+    while(1){
+    if(sdCD == 0){
+       RGB_LED.set_led(0,1,0);
+    }else{
+        RGB_LED.set_led(1,0,0);
+    }
+    
+    wait(10); 
+    }
+*/
 /*
 motor1.getFault();
     wait(1);
@@ -837,7 +779,7 @@
 
     DigPot.writeRegister(digital_pot_setpoint);
     wait(1);
-    pumps = 1;
+    //pumps = 1;
     //pumpOn = 1;
 
     uint8_t subjectLabelOriginal[8] = {0,};