Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ADS1115 BME280 CronoDot SDFileSystem mbed
Fork of Outdoor_UPAS_v1_2_powerfunction 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 **//
//---------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------//
