A system to help you ride your bike better than you do right now.
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed LSM9DS1_Library_cal
main.cpp@2:d08643ff3c62, 2016-12-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |