attempt to fix posible power issues with the sharp
Dependencies: ADS1115 BME280 CronoDot SDFileSystem mbed
Fork of Outdoor_UPAS_v1_2_Tboard by
Diff: main.cpp
- 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,};