Reads data from arduino
Dependencies: mbed SDFileSystem FXOS8700Q
main.cpp@3:62b50cfbc21d, 2019-02-20 (annotated)
- Committer:
- oliviab
- Date:
- Wed Feb 20 15:20:06 2019 +0000
- Revision:
- 3:62b50cfbc21d
- Parent:
- 2:c00a058468c8
changed SD library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zer044 | 0:a4b73f736e46 | 1 | #include "mbed.h" |
zer044 | 0:a4b73f736e46 | 2 | #include <string> |
oliviab | 2:c00a058468c8 | 3 | #include "FXOS8700Q.h" |
oliviab | 2:c00a058468c8 | 4 | #include "SDFileSystem.h" |
zer044 | 0:a4b73f736e46 | 5 | /*------------------------------------------------------------------------------ |
zer044 | 0:a4b73f736e46 | 6 | Before to use this example, ensure that you an hyperterminal installed on your |
zer044 | 0:a4b73f736e46 | 7 | computer. More info here: https://developer.mbed.org/handbook/Terminals |
zer044 | 0:a4b73f736e46 | 8 | |
zer044 | 0:a4b73f736e46 | 9 | The default serial comm port uses the SERIAL_TX and SERIAL_RX pins (see their |
zer044 | 0:a4b73f736e46 | 10 | definition in the PinNames.h file). |
zer044 | 0:a4b73f736e46 | 11 | |
zer044 | 0:a4b73f736e46 | 12 | The default serial configuration in this case is 9600 bauds, 8-bit data, no parity |
zer044 | 0:a4b73f736e46 | 13 | |
zer044 | 0:a4b73f736e46 | 14 | If you want to change the baudrate for example, you have to redeclare the |
zer044 | 0:a4b73f736e46 | 15 | serial object in your code: |
zer044 | 0:a4b73f736e46 | 16 | |
zer044 | 0:a4b73f736e46 | 17 | Serial pc(SERIAL_TX, SERIAL_RX); |
zer044 | 0:a4b73f736e46 | 18 | |
zer044 | 0:a4b73f736e46 | 19 | Then, you can modify the baudrate and print like this: |
zer044 | 0:a4b73f736e46 | 20 | |
zer044 | 0:a4b73f736e46 | 21 | pc.baud(115200); |
zer044 | 0:a4b73f736e46 | 22 | pc.printf("Hello World !\n"); |
zer044 | 0:a4b73f736e46 | 23 | ------------------------------------------------------------------------------*/ |
zer044 | 0:a4b73f736e46 | 24 | |
zer044 | 0:a4b73f736e46 | 25 | DigitalOut led(LED1); |
zer044 | 0:a4b73f736e46 | 26 | |
zer044 | 1:f301907c2ba4 | 27 | #define UART3_tx PTC17 |
zer044 | 1:f301907c2ba4 | 28 | #define UART3_rx PTC16 |
zer044 | 1:f301907c2ba4 | 29 | // |
zer044 | 1:f301907c2ba4 | 30 | //#define UART3_tx D8 |
zer044 | 1:f301907c2ba4 | 31 | //#define UART3_rx D2 |
zer044 | 0:a4b73f736e46 | 32 | Serial s_com(UART3_tx, UART3_rx); // tx, rx read gps in |
oliviab | 2:c00a058468c8 | 33 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS |
oliviab | 2:c00a058468c8 | 34 | FILE *fp; |
oliviab | 2:c00a058468c8 | 35 | |
zer044 | 0:a4b73f736e46 | 36 | |
zer044 | 0:a4b73f736e46 | 37 | void readData(); |
oliviab | 2:c00a058468c8 | 38 | void sensor_data(); |
oliviab | 2:c00a058468c8 | 39 | void log_data(); |
zer044 | 0:a4b73f736e46 | 40 | |
oliviab | 2:c00a058468c8 | 41 | char rca1[128]; |
zer044 | 0:a4b73f736e46 | 42 | //string rca2; |
oliviab | 2:c00a058468c8 | 43 | string data; |
zer044 | 0:a4b73f736e46 | 44 | |
zer044 | 0:a4b73f736e46 | 45 | int main() |
zer044 | 0:a4b73f736e46 | 46 | { |
oliviab | 2:c00a058468c8 | 47 | |
oliviab | 2:c00a058468c8 | 48 | |
oliviab | 2:c00a058468c8 | 49 | printf("Hello World !\n"); |
oliviab | 2:c00a058468c8 | 50 | acc.enable(); //start accelerometer |
oliviab | 2:c00a058468c8 | 51 | mag.enable(); |
oliviab | 2:c00a058468c8 | 52 | |
zer044 | 0:a4b73f736e46 | 53 | |
oliviab | 2:c00a058468c8 | 54 | fp = fopen("/sd/sensors.txt", "r"); |
oliviab | 2:c00a058468c8 | 55 | if (fp != NULL) { |
oliviab | 2:c00a058468c8 | 56 | fclose(fp); |
oliviab | 2:c00a058468c8 | 57 | remove("/sd/sensors.txt"); |
oliviab | 2:c00a058468c8 | 58 | //pc.printf("Remove an existing file with the same name \n"); |
oliviab | 2:c00a058468c8 | 59 | } |
zer044 | 0:a4b73f736e46 | 60 | |
zer044 | 0:a4b73f736e46 | 61 | while(1) { |
zer044 | 0:a4b73f736e46 | 62 | while (s_com.readable()) { |
zer044 | 0:a4b73f736e46 | 63 | // rca = s_com.getc(); |
zer044 | 0:a4b73f736e46 | 64 | // printf("%c",rca); |
oliviab | 2:c00a058468c8 | 65 | readData(); |
oliviab | 2:c00a058468c8 | 66 | sensor_data(); |
oliviab | 2:c00a058468c8 | 67 | |
zer044 | 0:a4b73f736e46 | 68 | } |
zer044 | 0:a4b73f736e46 | 69 | } |
zer044 | 0:a4b73f736e46 | 70 | } |
zer044 | 0:a4b73f736e46 | 71 | |
zer044 | 0:a4b73f736e46 | 72 | void readData() |
zer044 | 0:a4b73f736e46 | 73 | { |
oliviab | 2:c00a058468c8 | 74 | s_com.scanf("%s",rca1); |
oliviab | 2:c00a058468c8 | 75 | string rca2(rca1); |
oliviab | 2:c00a058468c8 | 76 | rca2 += "\n"; |
oliviab | 2:c00a058468c8 | 77 | log_data(rca2); |
oliviab | 2:c00a058468c8 | 78 | printf(rca2.c_str()); |
zer044 | 0:a4b73f736e46 | 79 | } |
oliviab | 2:c00a058468c8 | 80 | |
oliviab | 2:c00a058468c8 | 81 | void sensor_data() |
oliviab | 2:c00a058468c8 | 82 | { |
oliviab | 2:c00a058468c8 | 83 | |
oliviab | 2:c00a058468c8 | 84 | //get mag+accel data |
oliviab | 2:c00a058468c8 | 85 | motion_data_units_t acc_data, mag_data; |
oliviab | 2:c00a058468c8 | 86 | |
oliviab | 2:c00a058468c8 | 87 | acc.getAxis(acc_data); |
oliviab | 2:c00a058468c8 | 88 | mag.getAxis(mag_data); |
oliviab | 2:c00a058468c8 | 89 | pc.printf("\rACC: X=%1.4ff Y=%1.4ff Z=%1.4ff ", acc_data.x, acc_data.y, acc_data.z); |
oliviab | 2:c00a058468c8 | 90 | pc.printf(" MAG: X=%4.1ff Y=%4.1ff Z=%4.1ff \r\n", mag_data.x, mag_data.y, mag_data.z); |
oliviab | 2:c00a058468c8 | 91 | data = ("ACC: "+ acc_data.x + ", "+ acc_data.y + ", " + acc_data.z + "\n" + |
oliviab | 2:c00a058468c8 | 92 | "MAG: " + mag_data.x + ", " + mag_data.y + ", " + mag_data.z + "\n"); |
oliviab | 2:c00a058468c8 | 93 | log_data(data); |
oliviab | 2:c00a058468c8 | 94 | |
oliviab | 2:c00a058468c8 | 95 | // wait(0.5); |
oliviab | 2:c00a058468c8 | 96 | |
oliviab | 2:c00a058468c8 | 97 | } |
oliviab | 2:c00a058468c8 | 98 | |
oliviab | 2:c00a058468c8 | 99 | |
oliviab | 2:c00a058468c8 | 100 | void log_data(string data) |
oliviab | 2:c00a058468c8 | 101 | { |
oliviab | 2:c00a058468c8 | 102 | |
oliviab | 2:c00a058468c8 | 103 | // printf("\nWriting data to the sd card \n"); |
oliviab | 2:c00a058468c8 | 104 | fp = fopen("/sd/sensors.txt", "w"); |
oliviab | 2:c00a058468c8 | 105 | if (fp == NULL) { |
oliviab | 2:c00a058468c8 | 106 | //pc.printf("Unable to write the file \n"); |
oliviab | 2:c00a058468c8 | 107 | } else { |
oliviab | 2:c00a058468c8 | 108 | fprintf(fp, data); |
oliviab | 2:c00a058468c8 | 109 | fclose(fp); |
oliviab | 2:c00a058468c8 | 110 | //pc.printf("File successfully written! \n"); |
oliviab | 2:c00a058468c8 | 111 | } |
oliviab | 2:c00a058468c8 | 112 | |
oliviab | 2:c00a058468c8 | 113 | |
oliviab | 2:c00a058468c8 | 114 | } |