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 Igor Skochinsky

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

Committer:
mbedevilledEgg
Date:
2017-03-11
Revision:
5:b4d5a68654bb
Parent:
4:c64b742e9388
Child:
6:09a0610af8b7

File content as of revision 5:b4d5a68654bb:

#include "mbed.h" // mbed library
#include "MMA7660.h" // Accelerometer library
#include "GPS.h" // GPS library
#include "CMPS03.h" // Compass library
#include "C12832_lcd.h" // LCD screen library
#include "MSCFileSystem.h"

#define FSNAME "USB"
#define LIM 10

GPS gps(p9, p10); // GPS Connection
CMPS03 compass(p28, p27, CMPS03_DEFAULT_I2C_ADDRESS); // Compass connection
MMA7660 MMA(p28, p27); // Accelerometer connection
C12832_LCD lcd;
Serial pc(USBTX, USBRX);


// Declarations
float ax, ay, az;
DigitalOut connectionLed(LED1);
MSCFileSystem msc("USB"); // Mount USB stick under the name "USB"

int main()
{
    /*
    DIR *d;
    struct dirent *p; // For printing externally (USB Stick)
    d = opendir("/" FSNAME);
    */
    if (MMA.testConnection())
        connectionLed = 1; // Checking MMA connected correctly
   
    FILE *Accel = fopen("/USB/Accelerometer.txt", "w"); // Opens text file for Accelerometer                
    FILE *GPS = fopen("/USB/GPS.txt", "w"); // Opens text file for GPS                      
    FILE *Comp = fopen("/USB/Compass.txt", "w"); // Opens text file for Compass   
    
    float Offset, GenBearing;
    
    while(1)
    {
        //Accelerometer
        Accel = fopen("/USB/Accelerometer.txt", "a");
        ax=MMA.x();
        ay=MMA.y();
        az=MMA.z();
        fprintf(Accel,"%f, %f, %f,\r\n",ax,ay,az);
        lcd.locate(1,21);
        lcd.printf("Accel: %.2f, %.2f, %.2f", ax, ay, az);
                
        //GPS
        GPS = fopen("/USB/GPS.txt", "a");
        if (gps.sample())
        {
            fprintf(GPS, "\n%f, %f\r\n", gps.latitude, gps.longitude);
            lcd.locate(1,1);
            lcd.printf("GPS: %.4f, %.4f, %.4f", gps.latitude, gps.longitude);
        }       
        else // For no signal
        {
            fprintf(GPS, "\nNo Lock!\n\n");
            lcd.locate(1,1);
            lcd.printf("GPS: No Lock!");
        }
        
        // Compass
        Offset = compass.readBearing();  // Initial definitions
        GenBearing = (compass.readBearing()/10 - Offset/10);
        Comp = fopen("/USB/Compass.txt", "a");
        if (GenBearing < 0)
        {
            GenBearing = 0 - GenBearing;
        }
        fprintf(Comp, "Bearing: %.2f\r\n", GenBearing);
        lcd.locate(1,11);
        lcd.printf("Offset: %.2f, CMP: %.2f", Offset/10, GenBearing);
        
        fclose(Accel);
        fclose(GPS);
        fclose(Comp);
    }
}