A system to help you ride your bike better than you do right now.

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed LSM9DS1_Library_cal

Committer:
kswanson31
Date:
Fri Dec 02 23:03:00 2016 +0000
Revision:
2:d08643ff3c62
Parent:
1:9d3f2e86392e
Child:
3:26e0c0d7984f
added time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kswanson31 0:134f49df01f8 1 #include "mbed.h"
kswanson31 0:134f49df01f8 2 #include "SDFileSystem.h"
kswanson31 2:d08643ff3c62 3 #include "uLCD_4DGL.h"
kswanson31 0:134f49df01f8 4
kswanson31 0:134f49df01f8 5 DigitalOut myled(LED1);
kswanson31 0:134f49df01f8 6
kswanson31 0:134f49df01f8 7 SDFileSystem sd(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name); //mosi -> DI, miso <- DO, slck -> sclck, CS -> CS
kswanson31 0:134f49df01f8 8 uLCD_4DGL lcd(PinName tx, PinName rx, PinName rst);
kswanson31 0:134f49df01f8 9
kswanson31 0:134f49df01f8 10 float distance;
kswanson31 0:134f49df01f8 11 float speed;
kswanson31 0:134f49df01f8 12 float maxSpeed;
kswanson31 2:d08643ff3c62 13 time_t start = 1480719111;
kswanson31 0:134f49df01f8 14
kswanson31 0:134f49df01f8 15 int main() {
kswanson31 2:d08643ff3c62 16 set_time(start); // Set RTC time
kswanson31 0:134f49df01f8 17
kswanson31 0:134f49df01f8 18 // open the file for reading and appending records
kswanson31 1:9d3f2e86392e 19
kswanson31 0:134f49df01f8 20 // recall last trip
kswanson31 0:134f49df01f8 21 recall_trip(&fp);
kswanson31 0:134f49df01f8 22 wait(10);
kswanson31 0:134f49df01f8 23 lcd.cls();
kswanson31 0:134f49df01f8 24
kswanson31 0:134f49df01f8 25 // normal operation loop here
kswanson31 2:d08643ff3c62 26 while(true) {
kswanson31 2:d08643ff3c62 27 time_t current = time(NULL);
kswanson31 2:d08643ff3c62 28
kswanson31 0:134f49df01f8 29 // check current speed
kswanson31 0:134f49df01f8 30 // check curret distance
kswanson31 0:134f49df01f8 31 // check time so far
kswanson31 0:134f49df01f8 32 // display this on the screen
kswanson31 0:134f49df01f8 33 // check if braking, turning left or right
kswanson31 0:134f49df01f8 34 // show that on the screen
kswanson31 2:d08643ff3c62 35 }
kswanson31 0:134f49df01f8 36
kswanson31 0:134f49df01f8 37 // store this trip
kswanson31 0:134f49df01f8 38 lcd.cls();
kswanson31 0:134f49df01f8 39 store_trip(&fp);
kswanson31 0:134f49df01f8 40
kswanson31 0:134f49df01f8 41 // close the file at the end of the program
kswanson31 0:134f49df01f8 42 fclose(fp);
kswanson31 0:134f49df01f8 43 // end everything
kswanson31 0:134f49df01f8 44 }
kswanson31 0:134f49df01f8 45
kswanson31 0:134f49df01f8 46 void store_trip(FILE * fp) {
kswanson31 2:d08643ff3c62 47
kswanson31 2:d08643ff3c62 48 FILE *fp = fopen("/sd/records/recent.txt", "w");
kswanson31 2:d08643ff3c62 49
kswanson31 1:9d3f2e86392e 50 // write trip results to the SD card
kswanson31 1:9d3f2e86392e 51 if (fp == NULL) {
kswanson31 2:d08643ff3c62 52 lcd.locate(0, 1);
kswanson31 2:d08643ff3c62 53 lcd.printf("Could not open file for write\n");
kswanson31 2:d08643ff3c62 54 } else {
kswanson31 2:d08643ff3c62 55 fprintf(fp, "%d %d %d",
kswanson31 1:9d3f2e86392e 56
kswanson31 1:9d3f2e86392e 57 }
kswanson31 0:134f49df01f8 58 }
kswanson31 0:134f49df01f8 59
kswanson31 0:134f49df01f8 60 void recall_trip(FILE * fp) {
kswanson31 0:134f49df01f8 61 // display the most recent trip made on the screen
kswanson31 0:134f49df01f8 62 // display the most impressive trip (longest distance, best speed, least time)
kswanson31 0:134f49df01f8 63
kswanson31 0:134f49df01f8 64 int lineCount;
kswanson31 0:134f49df01f8 65 char str[12];
kswanson31 0:134f49df01f8 66 char split;
kswanson31 0:134f49df01f8 67
kswanson31 1:9d3f2e86392e 68 // read out the most recent trip
kswanson31 1:9d3f2e86392e 69 FILE *fp = fopen("/sd/records/recent.txt", "r");
kswanson31 1:9d3f2e86392e 70
kswanson31 1:9d3f2e86392e 71 if (fp == NULL) {
kswanson31 1:9d3f2e86392e 72 lcd.locate(0, 1);
kswanson31 1:9d3f2e86392e 73 lcd.printf("Could not open file for write\n");
kswanson31 1:9d3f2e86392e 74 } else {
kswanson31 1:9d3f2e86392e 75 std::getline(file, str);
kswanson31 1:9d3f2e86392e 76 lcd.locate(0, 1);
kswanson31 1:9d3f2e86392e 77 lcd.printf("Most recent trip\n%s", str);
kswanson31 1:9d3f2e86392e 78 }
kswanson31 1:9d3f2e86392e 79
kswanson31 1:9d3f2e86392e 80 // read out the most impressive trip so far
kswanson31 1:9d3f2e86392e 81 FILE *fp = fopen("/sd/records/best_of.txt", "r");
kswanson31 1:9d3f2e86392e 82
kswanson31 0:134f49df01f8 83 if(fp == NULL) {
kswanson31 0:134f49df01f8 84 lcd.locate(0, 1);
kswanson31 0:134f49df01f8 85 lcd.printf("Could not open file for write\n");
kswanson31 0:134f49df01f8 86 } else {
kswanson31 0:134f49df01f8 87 lcd.locate(0, 1);
kswanson31 0:134f49df01f8 88 while (std::getline(file, str)) {
kswanson31 0:134f49df01f8 89
kswanson31 0:134f49df01f8 90 }
kswanson31 0:134f49df01f8 91 }
kswanson31 0:134f49df01f8 92 }