Nucleo based high altitude balloon computer
Dependencies: SDFileSystem Venus838 mbed MS5611 TinyGPS
Atlas.cpp
- Committer:
- matgyver
- Date:
- 2014-06-26
- Revision:
- 6:f91db4a7acf1
- Parent:
- 5:1facb0e83e62
- Child:
- 7:308ab9062b76
File content as of revision 6:f91db4a7acf1:
#include "mbed.h" #include "Atlas.h" #include "SDFileSystem.h" #include "Venus838.h" #include "TinyGPS.h" //#include "nmea_parser.h" #include "MS5611I2C.h" DigitalOut grn(LED_GRN); DigitalOut ylw(LED_YLW); AnalogIn batt(PC_2); Serial pc(USBTX, USBRX); Venus838 venus(GPS_TX, GPS_RX); TinyGPS gps; MS5611I2C pres(I2C_SDA, I2C_SCL, false); SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); Timer tick; void init() { pc.baud(115200); grn = LED_OFF; ylw = LED_OFF; printf("Configuring Venus GPS...\r\n"); //venus.setUpdateRate(1); venus.setNavigationMode(4); venus.setNmeaMessages(true, false, false, false, true, false); printf("Attempting to open SD card...\r\n"); mkdir("/sd/debug", 0777); printf("Attempting to open file...\r\n"); FILE *fp = fopen("/sd/debug/debug.txt", "w"); if(fp == NULL) { error("Could not open file for write\r\n"); ylw = LED_ON; } fprintf(fp, "Hooray, we can write to the SD Card. Go get a cookie."); printf("Closing file...\r\n"); fclose(fp); pres.printCoefficients(); tick.start(); pc.printf("Atlas Ready!\r\n"); } int main() { unsigned long date, time, ttf; double latitude, longitude, altitude; float pressure, temperature, battery; unsigned int writeCount = 0; init(); FILE *fp = fopen("/sd/atlas.txt", "a"); fprintf(fp, "Atlas Logger\r\n"); fprintf(fp, "Date Time Lon Lat Alt Pressure Temp Battery\r\n"); fprintf(fp, "------------------------------------------------------------------\r\n"); fclose(fp); while(true) { if(venus.readable()) { char c = venus.getc(); //pc.putc(c); gps.encode(c); } if(tick.read_ms() >= 500) { tick.reset(); grn = !grn; gps.get_datetime(&date, &time, &ttf); gps.f_get_position(&latitude, &longitude, &ttf); altitude = gps.f_altitude(); pressure = pres.getPressure(); temperature = pres.getTemperature(); battery = (batt.read()*3.3f) * 4.0f; wait_ms(1); pc.printf("%u, %u, %f, %f, %f, %f, %f, %f\r\n", date, time, longitude, latitude, altitude, pressure, temperature, battery ); FILE *fp = fopen("/sd/atlas.txt", "a"); fprintf(fp, "%u, %u, %f, %f, %f, %f, %f %f\r\n", date, time, longitude, latitude, altitude, pressure, temperature, battery ); fclose(fp); writeCount++; if(writeCount > 100) { writeCount = 0; fclose(fp); FILE *fp = fopen("/sd/atlas.txt", "a"); } } } }