Final project for ECE 4180.
Dependencies: GPS SDFileSystem mbed-rtos mbed MPL3115A2
Fork of GPS_HelloWorld by
Diff: main.cpp
- Revision:
- 2:21e4b9092bb2
- Parent:
- 1:2c4f640a8104
- Child:
- 3:b490294520d5
diff -r 2c4f640a8104 -r 21e4b9092bb2 main.cpp --- a/main.cpp Mon Nov 16 22:10:27 2015 +0000 +++ b/main.cpp Tue Nov 17 06:59:00 2015 +0000 @@ -1,59 +1,94 @@ #include "mbed.h" +#include "rtos.h" + #include "GPS.h" +#include "SDFileSystem.h" Serial pc(USBTX, USBRX); +SDFileSystem sd(p5, p6, p7, p8, "sd"); GPS gps(p9, p10); + +AnalogIn temp1(p18); +AnalogIn temp2(p19); +AnalogIn temp3(p20); + +DigitalIn dtmf(p11); + DigitalOut led1(LED1); -Timer T; -bool cutdown=0; DigitalOut relay(p8); -bool attempted=0; -DigitalIn DTMF(p11); -AnalogIn Temp1(p18); -AnalogIn Temp2(p19); -AnalogIn Temp3(p20); + +Timer t; + +bool attempted = false; +bool cutdown = false; + +FILE *sdout; -int main() { - T.start(); - relay=0; +void init() +{ + t.start(); + relay = 0; + + mkdir("/sd/weather_balloon", 0777); + sdout = fopen("/sd/weather_balloon/log.txt", "w"); +} + +int main() +{ float tempC1, tempF1, tempC2, tempF2, tempC3, tempF3; - while(1) { + + while(1) + { + pc.printf("----- %f -----\n\r", t.read()); + fprintf(sdout, "----- %f -----\n\r", t.read()); - pc.printf("----- %f -----\n\r",T.read()); - if(T.read()>= 20){ - cutdown=1; - } + if(t.read() >= 20) + cutdown = true; gps.sample(); + pc.printf("Long = %f\n\rLati = %f\n\r", gps.longitude, gps.latitude); - if(gps.longitude != 0){ - led1=1; - } + fprintf(sdout, "Long = %f\n\rLati = %f\n\r", gps.longitude, gps.latitude); + + if(!gps.longitude) + led1 = 1; - tempC1 = ((Temp1*3.3)-0.600)*100.0; - tempC2 = ((Temp2*3.3)-0.600)*100.0; - tempC3 = ((Temp3*3.3)-0.600)*100.0; - tempF1 = (9.0*tempC1)/5.0 + 32; - tempF2 = (9.0*tempC2)/5.0 + 32; - tempF3 = (9.0*tempC3)/5.0 + 32; - pc.printf("Temp1 = %f\n\rTemp2 = %f\n\rTemp3 = %f\n\r",tempF1, tempF2, tempF3); + tempC1 = ((temp1 * 3.3) - 0.600) * 100.0; + tempC2 = ((temp2 * 3.3) - 0.600) * 100.0; + tempC3 = ((temp3 * 3.3) - 0.600) * 100.0; + tempF1 = (9.0 * tempC1) / 5.0 + 32; + tempF2 = (9.0 * tempC2) / 5.0 + 32; + tempF3 = (9.0 * tempC3) / 5.0 + 32; - if (DTMF){ + pc.printf("Temp1 = %f\n\rTemp2 = %f\n\rTemp3 = %f\n\r", tempF1, tempF2, tempF3); + fprintf(sdout, "Temp1 = %f\n\rTemp2 = %f\n\rTemp3 = %f\n\r", tempF1, tempF2, tempF3); + + if(dtmf) + { pc.printf("DTMF = True\n\r"); - cutdown=1; - } else { - pc.printf("DTMF = False\n\r"); - } + fprintf(sdout, "DTMF = True\n\r"); + + cutdown = true; + } + else + { + pc.printf("DTMF = False\n\r"); + fprintf(sdout, "DTMF = False\n\r"); + } -if (cutdown==1 && attempted != 1){ - pc.printf("Cutdown Started = %f\n\r",T.read()); - relay=1; - wait(20); - relay=0; - pc.printf("Cutdown Ended = %f\n\r",T.read()); - attempted=1; - } - + if(cutdown && !attempted) + { + pc.printf("Cutdown Started = %f\n\r", t.read()); + fprintf(sdout, "Cutdown Started = %f\n\r", t.read()); + + relay = 1; + wait(20); + relay = 0; + + pc.printf("Cutdown Ended = %f\n\r", t.read()); + fprintf(sdout, "Cutdown Ended = %f\n\r", t.read()); + + attempted = true; } } - +}