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:
- 43:05aa1fb68946
- Parent:
- 42:c8ed2dc04dfe
- Child:
- 44:075fa63d5df1
--- a/main.cpp Tue May 03 03:54:50 2016 +0000 +++ b/main.cpp Tue May 03 16:35:44 2016 +0000 @@ -11,7 +11,7 @@ #include "EEPROM.h" #include "Calibration.h" #include "MAX_M8.h" -#include "DRV8830.h" +//#include "DRV8830.h" #include "Tb_SD_Reader.h" @@ -74,11 +74,10 @@ DigitalOut gpsEN(PB_15, 0); Max_M8 gps(PB_9, PB_8,(0x84)); +/* ///////////////////////////////////////////// //Hbridge Valve Control ///////////////////////////////////////////// - - DRV8830 schoolF1(PB_9, PB_8, 0xC4); //Work/School Filter A HB1 DRV8830 homeF2(PB_9, PB_8, 0xCA); //Home Filter B HB2 DRV8830 transitF3(PB_9, PB_8, 0xCC); //Transit Filter C HB3 @@ -87,7 +86,7 @@ DigitalIn hb2_home(PA_7); DigitalIn hb3_transit(PA_5); DigitalIn hb4_blank(PA_4); - +*/ ///////////////////////////////////////////// //SD Card @@ -115,6 +114,14 @@ struct tm STtime; char timestr[32]; +char yrstr[4]; +char mostr[4]; +char daystr[4]; +char hrstr[4]; +char minstr[4]; +char secstr[4]; + +int stYr, stMo, stDay, stHr, stMin, stSec; float press; @@ -485,6 +492,52 @@ return distance; } +////////////////////////////////////////////////////////////// +//Shutdown Function +////////////////////////////////////////////////////////////// +bool timecompare(uint8_t t_sec, uint8_t t_minutes, uint8_t t_hour, uint8_t t_date, uint8_t t_month, uint8_t t_year) +{ + + time_t seconds = time(NULL); + //strftime(timestr, 32, "%y%m%d%H%M%S", localtime(&seconds)); + + strftime(yrstr, 4, "%y", localtime(&seconds)); + stYr = atoi(yrstr); + + strftime(mostr, 4, "%m", localtime(&seconds)); + stMo = atoi(mostr); + + strftime(daystr, 4, "%d", localtime(&seconds)); + stDay = atoi(daystr); + + strftime(hrstr, 4, "%H", localtime(&seconds)); + stHr = atoi(hrstr); + + strftime(minstr, 4, "%M", localtime(&seconds)); + stMin = atoi(minstr); + + strftime(secstr, 4, "%S", localtime(&seconds)); + stSec = atoi(secstr); + + if(t_year != stYr){ + return t_year < stYr; + } + if(t_month != stMo){ + return t_month < stMo; + } + if(t_date != stDay){ + return t_date < stDay; + } + if(t_hour != stHr){ + return t_hour < stHr; + } + if(t_minutes != stMin){ + return t_minutes < stMin; + } + return t_sec < stSec; + +} + ////////////////////////////////////////////////////////////// //Shutdown Function @@ -495,7 +548,7 @@ //UPDATE THIS TO WORK WITH ST RTC INSTEAD //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - if(RTC_UPAS.compare(startAndEndTime[6], startAndEndTime[7], startAndEndTime[8], startAndEndTime[9], startAndEndTime[10], startAndEndTime[11])) { + if(timecompare(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."); } @@ -509,10 +562,31 @@ { //Get time and set RTC /////////////////////////// + RTC_UPAS.get_time(); time_t seconds = time(NULL); strftime(timestr, 32, "%y%m%d%H%M%S", localtime(&seconds)); - //strftime(hrstr, 32, "%H", localtime(&seconds)); - RTC_UPAS.get_time(); + + strftime(yrstr, 4, "%y", localtime(&seconds)); + stYr = atoi(yrstr); + + strftime(mostr, 4, "%m", localtime(&seconds)); + stMo = atoi(mostr); + + strftime(daystr, 4, "%d", localtime(&seconds)); + stDay = atoi(daystr); + + strftime(hrstr, 4, "%H", localtime(&seconds)); + stHr = atoi(hrstr); + + strftime(minstr, 4, "%M", localtime(&seconds)); + stMin = atoi(minstr); + + strftime(secstr, 4, "%S", localtime(&seconds)); + stSec = atoi(secstr); + + pc.printf("%s,%s,%d,%s,%d,%s,%d,%s,%d,%s,%d,%s,%d\r\n", timestr,yrstr,stYr,mostr,stMo,daystr,stDay,hrstr,stHr,minstr,stMin,secstr,stSec); + + @@ -568,97 +642,7 @@ gpslatitude = gps.lat; gpslongitude = gps.lon; gpsaltitude = gps.altitude; - - if(gpsFix){ - - - workDistance = GPSdistanceCalc (work_lat, work_lon); - homeDistance = GPSdistanceCalc (home_lat, home_lon); - home2Distance = GPSdistanceCalc (home_lat2, home_lon2); - - RGB_LED.set_led(0,0,0); - - if(workDistance < 100) { - if(sampledVol < 2){ - pumps = 1; - } - - if(location != 1){ - location = 1; - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(254); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - //RGB_LED.set_led(0,1,1); - } - - }else if(homeDistance < 100 || home2Distance < 100) { // 25 or 30 m instead? - - if(location != 2){ - location = 2; - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(254); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - - //RGB_LED.set_led(1,0,1); - } - - }else{ - if(location != 3){ - location = 3; - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(254); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - } - - /* - if(sampledVol < 2){ - RGB_LED.set_led(0,1,0); - } - */ - } - - }else if(homeDistance == 99999 && workDistance == 99999){ - location = 0; - //RGB_LED.set_led(1,1,0); - } - -//} + //} //Check for 3.3V rail cut out and turn off pumps in this event if(vInReading > 5950 && amps > 8191) { @@ -666,32 +650,7 @@ wait(1); //Turn pumps back on once the sampler is plugged in and charging after pumps shutoff and 3.3V rail drops out } else if(pumps == 0 && amps < 8191) { - - // If pumps are plugged in the next morning assume the sampler is at school if after 8 if no GPSfix is available - if(gpsFix == 0 && RTC_UPAS.hour>8){ - gpslatitude = work_lat; // specific to Rivendell Study. In case student forgets to plug in and teachers catch this. Assume if plugged in after 8 and no GPS signal will change to proper valve. Hopefully... - gpslongitude = work_lon; // specific to Rivendell Study. In case student forgets to plug in and teachers catch this. Assume if plugged in after 8 and no GPS signal will change to proper valve. Hopefully... - //Adjust valves to ensure everything is in proper place before pumps restart - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(254); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - } - - - pumps = 1; - + pumps = 1; } @@ -817,40 +776,7 @@ wait(10); } - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - */ - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - +*/ gpsEN = 1; @@ -1001,20 +927,7 @@ E2PROM.byteToFloat(flowRateBytes, &volflowSet); - time_t seconds = time(NULL); - strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds)); - RTC_UPAS.get_time(); - if(tempSerialNum < 18){ - sprintf(filename, "/sd/MS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%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],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14]); - - } - else{ - sprintf(filename, "/sd/PS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%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],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14]); - } - //sprintf(filename, "/sd/UPAS_TboardtestLog_%s_%c%c%c%c%c%c%c%c.txt", timestr,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]); - //sprintf(filename, "/sd/UPAS_TboardtestLog_%s.txt", timestr); - FILE *fp = fopen(filename, "w"); - fclose(fp); + /* while(!gpsFix){ gpsFix = gps.read(1); @@ -1031,33 +944,27 @@ - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - //UPDATE THIS TO WORK WITH ST RTC INSTEAD - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -/* - while(!RTC_UPAS.compare(startAndEndTime[0], startAndEndTime[1], startAndEndTime[2], startAndEndTime[3], startAndEndTime[4], startAndEndTime[5])) { // this while waits for the start time by looping until the start time + while(!timecompare(startAndEndTime[0], startAndEndTime[1], startAndEndTime[2], startAndEndTime[3], startAndEndTime[4], startAndEndTime[5])) { // this while waits for the start time by looping until the start time wait(0.5); - RTC_UPAS.get_time(); + //RTC_UPAS.get_time(); } - */ - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); + + time_t seconds = time(NULL); + strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds)); + RTC_UPAS.get_time(); + if(tempSerialNum < 18){ + sprintf(filename, "/sd/MS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%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],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14]); - schoolF1.drive(254); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); + } + else{ + sprintf(filename, "/sd/PS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%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],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14]); + } + //sprintf(filename, "/sd/UPAS_TboardtestLog_%s_%c%c%c%c%c%c%c%c.txt", timestr,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]); + //sprintf(filename, "/sd/UPAS_TboardtestLog_%s.txt", timestr); + FILE *fp = fopen(filename, "w"); + fclose(fp); RGB_LED.set_led(1,0,1); @@ -1170,88 +1077,13 @@ wait(1); RGB_LED.set_led(0,0,0); - //stop.attach(&check_stop, 9); // check if we should shut down every 9 number seconds, starting 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, 3); -/* - wait(60); - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(254); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - - -wait(60); - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(254); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - - wait(60); - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(254); //closed = 253, open = 254 - blankF4.drive(253); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); - - wait(60); - - schoolF1.getFault(); - homeF2.getFault(); - transitF3.getFault(); - blankF4.getFault(); - - schoolF1.drive(253); //closed = 253, open = 254 - homeF2.drive(253); //closed = 253, open = 254 - transitF3.drive(253); //closed = 253, open = 254 - blankF4.drive(254); //closed = 253, open = 254 - - wait(1); - schoolF1.stop(); - homeF2.stop(); - transitF3.stop(); - blankF4.stop(); -*/ - //** end of initalization **// //---------------------------------------------------------------------------------------------// //---------------------------------------------------------------------------------------------//