Reads data from arduino

Dependencies:   mbed SDFileSystem FXOS8700Q

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?

UserRevisionLine numberNew 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 }