Program to read data from sensors, write them to a file which can then be interpreted by software to help show the path of a bicycle as it travels around a field
Dependencies: C12832_lcd FatFileSystemCpp MMA7660 CMPS03 GPS
Fork of MSCUsbHost by
Program to link a compass and a GPS to an MBED to produce a CSV file which can be used to track a bicycle around a field
Results can be found here
main.cpp@13:0dd713c97cd1, 2017-03-20 (annotated)
- Committer:
- jrmswell
- Date:
- Mon Mar 20 12:51:10 2017 +0000
- Revision:
- 13:0dd713c97cd1
- Parent:
- 11:c85911a4c956
- Child:
- 14:d70e165ddf30
Reverted back to when it was working on Thursday afternoon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedevilledEgg | 4:c64b742e9388 | 1 | #include "mbed.h" // mbed library |
mbedevilledEgg | 4:c64b742e9388 | 2 | #include "MMA7660.h" // Accelerometer library |
mbedevilledEgg | 4:c64b742e9388 | 3 | #include "GPS.h" // GPS library |
mbedevilledEgg | 4:c64b742e9388 | 4 | #include "CMPS03.h" // Compass library |
mbedevilledEgg | 4:c64b742e9388 | 5 | #include "C12832_lcd.h" // LCD screen library |
igorsk | 0:e294af8d0e07 | 6 | #include "MSCFileSystem.h" |
mbedevilledEgg | 6:09a0610af8b7 | 7 | |
mbedevilledEgg | 4:c64b742e9388 | 8 | #define FSNAME "USB" |
mbedevilledEgg | 11:c85911a4c956 | 9 | #define LIM 200 |
mbedevilledEgg | 6:09a0610af8b7 | 10 | |
mbedevilledEgg | 4:c64b742e9388 | 11 | GPS gps(p9, p10); // GPS Connection |
mbedevilledEgg | 4:c64b742e9388 | 12 | CMPS03 compass(p28, p27, CMPS03_DEFAULT_I2C_ADDRESS); // Compass connection |
mbedevilledEgg | 4:c64b742e9388 | 13 | MMA7660 MMA(p28, p27); // Accelerometer connection |
mbedevilledEgg | 4:c64b742e9388 | 14 | C12832_LCD lcd; |
mbedevilledEgg | 4:c64b742e9388 | 15 | Serial pc(USBTX, USBRX); |
mbedevilledEgg | 6:09a0610af8b7 | 16 | |
mbedevilledEgg | 6:09a0610af8b7 | 17 | |
mbedevilledEgg | 4:c64b742e9388 | 18 | // Declarations |
mbedevilledEgg | 4:c64b742e9388 | 19 | float ax, ay, az; |
mbedevilledEgg | 4:c64b742e9388 | 20 | DigitalOut connectionLed(LED1); |
mbedevilledEgg | 4:c64b742e9388 | 21 | MSCFileSystem msc("USB"); // Mount USB stick under the name "USB" |
mbedevilledEgg | 6:09a0610af8b7 | 22 | |
igorsk | 0:e294af8d0e07 | 23 | int main() |
igorsk | 0:e294af8d0e07 | 24 | { |
mbedevilledEgg | 10:d2dd3b355de5 | 25 | /* |
mbedevilledEgg | 4:c64b742e9388 | 26 | DIR *d; |
mbedevilledEgg | 4:c64b742e9388 | 27 | struct dirent *p; // For printing externally (USB Stick) |
mbedevilledEgg | 4:c64b742e9388 | 28 | d = opendir("/" FSNAME); |
mbedevilledEgg | 10:d2dd3b355de5 | 29 | */ |
mbedevilledEgg | 4:c64b742e9388 | 30 | if (MMA.testConnection()) |
mbedevilledEgg | 4:c64b742e9388 | 31 | connectionLed = 1; // Checking MMA connected correctly |
mbedevilledEgg | 4:c64b742e9388 | 32 | |
mbedevilledEgg | 10:d2dd3b355de5 | 33 | FILE *Accel = fopen("/USB/Accelerometer.csv", "w"); // Opens text file for Accelerometer |
mbedevilledEgg | 10:d2dd3b355de5 | 34 | FILE *GPS = fopen("/USB/GPS.csv", "w"); // Opens text file for GPS |
mbedevilledEgg | 10:d2dd3b355de5 | 35 | FILE *Comp = fopen("/USB/Compass.csv", "w"); // Opens text file for Compass |
mbedevilledEgg | 4:c64b742e9388 | 36 | |
mbedevilledEgg | 7:c08305966384 | 37 | int i; |
igorsk | 0:e294af8d0e07 | 38 | |
mbedevilledEgg | 8:f1679795e9ac | 39 | |
mbedevilledEgg | 7:c08305966384 | 40 | while(i < LIM) |
igorsk | 0:e294af8d0e07 | 41 | { |
mbedevilledEgg | 4:c64b742e9388 | 42 | //Accelerometer |
mbedevilledEgg | 10:d2dd3b355de5 | 43 | Accel = fopen("/USB/Accelerometer.csv", "a"); |
mbedevilledEgg | 4:c64b742e9388 | 44 | ax=MMA.x(); |
mbedevilledEgg | 4:c64b742e9388 | 45 | ay=MMA.y(); |
mbedevilledEgg | 4:c64b742e9388 | 46 | az=MMA.z(); |
mbedevilledEgg | 4:c64b742e9388 | 47 | fprintf(Accel,"%f, %f, %f,\r\n",ax,ay,az); |
mbedevilledEgg | 4:c64b742e9388 | 48 | lcd.locate(1,21); |
mbedevilledEgg | 4:c64b742e9388 | 49 | lcd.printf("Accel: %.2f, %.2f, %.2f", ax, ay, az); |
mbedevilledEgg | 11:c85911a4c956 | 50 | |
mbedevilledEgg | 4:c64b742e9388 | 51 | //GPS |
mbedevilledEgg | 10:d2dd3b355de5 | 52 | GPS = fopen("/USB/GPS.csv", "a"); |
mbedevilledEgg | 4:c64b742e9388 | 53 | if (gps.sample()) |
mbedevilledEgg | 4:c64b742e9388 | 54 | { |
jrmswell | 13:0dd713c97cd1 | 55 | fprintf(GPS, "\n%f, %f\r\n", gps.latitude, gps.longitude); |
mbedevilledEgg | 4:c64b742e9388 | 56 | lcd.locate(1,1); |
jrmswell | 13:0dd713c97cd1 | 57 | lcd.printf("%.4f, %.4f", gps.latitude, gps.longitude); |
mbedevilledEgg | 4:c64b742e9388 | 58 | } |
mbedevilledEgg | 4:c64b742e9388 | 59 | else // For no signal |
igorsk | 0:e294af8d0e07 | 60 | { |
mbedevilledEgg | 11:c85911a4c956 | 61 | fprintf(GPS, "No Lock!\n\n"); |
mbedevilledEgg | 4:c64b742e9388 | 62 | lcd.locate(1,1); |
mbedevilledEgg | 4:c64b742e9388 | 63 | lcd.printf("GPS: No Lock!"); |
igorsk | 0:e294af8d0e07 | 64 | } |
mbedevilledEgg | 11:c85911a4c956 | 65 | |
mbedevilledEgg | 4:c64b742e9388 | 66 | // Compass |
mbedevilledEgg | 7:c08305966384 | 67 | //Offset = compass.readBearing(); // Initial definitions |
mbedevilledEgg | 10:d2dd3b355de5 | 68 | Comp = fopen("/USB/Compass.csv", "a"); |
mbedevilledEgg | 8:f1679795e9ac | 69 | lcd.locate(1,11); |
mbedevilledEgg | 9:dbb7c4e63d45 | 70 | lcd.printf("Bearing: %.2f\n", compass.readBearing()/10.0); |
mbedevilledEgg | 10:d2dd3b355de5 | 71 | fprintf(Comp, "%.2f\r\n", compass.readBearing()/10.0); |
mbedevilledEgg | 8:f1679795e9ac | 72 | /* |
mbedevilledEgg | 7:c08305966384 | 73 | Comp = fopen("/USB/Compass.txt", "a"); |
mbedevilledEgg | 7:c08305966384 | 74 | fprintf(Comp, "%f\r\n", compass.readBearing()); |
mbedevilledEgg | 7:c08305966384 | 75 | lcd.locate(1,11); |
mbedevilledEgg | 8:f1679795e9ac | 76 | // lcd.printf("Offset: %f, CMP: %f", Offset, compass.readBearing()); |
mbedevilledEgg | 8:f1679795e9ac | 77 | lcd.printf("Bearing:%f\n", compass.readBearing() / 10.0); |
mbedevilledEgg | 8:f1679795e9ac | 78 | */ |
mbedevilledEgg | 7:c08305966384 | 79 | |
mbedevilledEgg | 7:c08305966384 | 80 | /* GenBearing = compass.readBearing()/10; |
mbedevilledEgg | 7:c08305966384 | 81 | Comp = fopen("/USB/Compass.txt", "a"); |
mbedevilledEgg | 7:c08305966384 | 82 | if (GenBearing < 0) |
mbedevilledEgg | 7:c08305966384 | 83 | { |
mbedevilledEgg | 7:c08305966384 | 84 | GenBearing = 0 - GenBearing; |
mbedevilledEgg | 7:c08305966384 | 85 | } |
mbedevilledEgg | 7:c08305966384 | 86 | fprintf(Comp, "%f\r\n", GenBearing); |
mbedevilledEgg | 7:c08305966384 | 87 | lcd.locate(1,11); |
mbedevilledEgg | 10:d2dd3b355de5 | 88 | lcd.printf("CMP: %.2f", Offset/10.0, GenBearing); |
mbedevilledEgg | 7:c08305966384 | 89 | */ |
mbedevilledEgg | 8:f1679795e9ac | 90 | wait (0.5); |
mbedevilledEgg | 8:f1679795e9ac | 91 | |
mbedevilledEgg | 8:f1679795e9ac | 92 | i++; |
mbedevilledEgg | 9:dbb7c4e63d45 | 93 | fclose(Accel); |
mbedevilledEgg | 11:c85911a4c956 | 94 | fclose(GPS); |
mbedevilledEgg | 7:c08305966384 | 95 | fclose(Comp); |
mbedevilledEgg | 9:dbb7c4e63d45 | 96 | } |
mbedevilledEgg | 9:dbb7c4e63d45 | 97 | |
mbedevilledEgg | 6:09a0610af8b7 | 98 | } |