Generation 3 of the Harp project

Dependencies:   Servo TMP36 GZ buffered-serial1 chan_fatfs_sd nmea_parser watchdog mbed-rtos mbed

Fork of HARP2 by Tyler Weaver

Committer:
tylerjw
Date:
Tue Dec 11 06:46:11 2012 +0000
Revision:
11:890a721158a5
Parent:
10:b13416bbb4cd
Child:
12:0d943d69d3ec
working writing to 2gb micro sd card with by open, write line, close file, repeat...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tylerjw 0:ce5f06c3895f 1 #include "mbed.h"
tylerjw 7:d8ecabe16c9e 2 #include "rtos.h"
tylerjw 10:b13416bbb4cd 3 #include "buffered_serial.h"
tylerjw 11:890a721158a5 4 #include "SDFileSystem.h"
tylerjw 11:890a721158a5 5
tylerjw 11:890a721158a5 6 SDFileSystem sd(p5, p6, p7, p8, "sd");
tylerjw 10:b13416bbb4cd 7
tylerjw 10:b13416bbb4cd 8 #define CELLS 3.0
tylerjw 10:b13416bbb4cd 9 #define LIPO_EMPTY 3.4
tylerjw 10:b13416bbb4cd 10 #define LIPO_FULL 4.2
tylerjw 10:b13416bbb4cd 11
tylerjw 10:b13416bbb4cd 12 const float BAT_MUL = 4.7;
tylerjw 10:b13416bbb4cd 13 const float BAT_FULL = (CELLS * LIPO_FULL);
tylerjw 10:b13416bbb4cd 14 const float BAT_EMPTY = (CELLS * LIPO_EMPTY);
tylerjw 10:b13416bbb4cd 15 const float BAT_RANGE = BAT_FULL - BAT_EMPTY;
tylerjw 0:ce5f06c3895f 16
tylerjw 0:ce5f06c3895f 17 Serial pc(USBTX, USBRX);
tylerjw 10:b13416bbb4cd 18 BufferedSerial gps(NC, p14);
tylerjw 10:b13416bbb4cd 19 AnalogIn gps_battery(p20);
tylerjw 7:d8ecabe16c9e 20
tylerjw 7:d8ecabe16c9e 21 void gps_thread(void const *args)
tylerjw 7:d8ecabe16c9e 22 {
tylerjw 10:b13416bbb4cd 23 char buffer[80];
tylerjw 9:4debfbc1fb3e 24
tylerjw 10:b13416bbb4cd 25 DigitalOut gps_led(LED4);
tylerjw 7:d8ecabe16c9e 26
tylerjw 7:d8ecabe16c9e 27 gps.baud(4800);
tylerjw 11:890a721158a5 28 mkdir("/sd/hab", 0777);
tylerjw 11:890a721158a5 29 FILE *fp = fopen("/sd/hab/gps.txt", "a");
tylerjw 11:890a721158a5 30 fputs("--- new log --- \r\n", fp);
tylerjw 11:890a721158a5 31 fclose(fp);
tylerjw 7:d8ecabe16c9e 32
tylerjw 7:d8ecabe16c9e 33 while(true) {
tylerjw 11:890a721158a5 34 fp = fopen("/sd/hab/gps.txt", "a");
tylerjw 10:b13416bbb4cd 35 gps.read_line(buffer);
tylerjw 10:b13416bbb4cd 36 gps_led = !gps_led;
tylerjw 10:b13416bbb4cd 37 //pc.puts(buffer);
tylerjw 11:890a721158a5 38 fputs(buffer, fp);
tylerjw 11:890a721158a5 39 fclose(fp);
tylerjw 0:ce5f06c3895f 40 }
tylerjw 7:d8ecabe16c9e 41 }
tylerjw 7:d8ecabe16c9e 42
tylerjw 7:d8ecabe16c9e 43 int main()
tylerjw 7:d8ecabe16c9e 44 {
tylerjw 10:b13416bbb4cd 45 pc.baud(9600);
tylerjw 9:4debfbc1fb3e 46 Thread thread(gps_thread, NULL, osPriorityHigh);
tylerjw 11:890a721158a5 47
tylerjw 10:b13416bbb4cd 48 while(true) {
tylerjw 10:b13416bbb4cd 49 float sample = gps_battery.read();
tylerjw 10:b13416bbb4cd 50 pc.printf("Sample: %f Volts\r\n", sample*3.3);
tylerjw 10:b13416bbb4cd 51 float voltage = sample*BAT_MUL*3.3;
tylerjw 10:b13416bbb4cd 52 pc.printf("Battery Voltage: %f Volts\r\n", voltage);
tylerjw 10:b13416bbb4cd 53 float level = (voltage-BAT_EMPTY) / (BAT_RANGE);
tylerjw 10:b13416bbb4cd 54 pc.printf("Battery Level: %f \r\n", level);
tylerjw 10:b13416bbb4cd 55 Thread::wait(1000);
tylerjw 10:b13416bbb4cd 56 }
tylerjw 0:ce5f06c3895f 57 }