Danillo Aguiar / Mbed 2 deprecated BAJA

Dependencies:   FXOS8700CQ LSM6DS3 SDFileSystem mbed

Fork of 2545_SD_Card by Craig Evans

Files at this revision

API Documentation at this revision

Comitter:
danilloaguiar
Date:
Wed Jul 11 00:59:13 2018 +0000
Parent:
0:5448330e1a33
Child:
2:7f8513e23223
Commit message:
ACCEL AND GYRO LSM6DS33 SAVE IN SD CARD K64F

Changed in this revision

FXOS8700CQ.lib Show annotated file Show diff for this revision Revisions of this file
LSM6DS3.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FXOS8700CQ.lib	Wed Jul 11 00:59:13 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/eencae/code/FXOS8700CQ/#1a98f69712e8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LSM6DS3.lib	Wed Jul 11 00:59:13 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/sid26/code/LSM6DS3/#b705b62fbc1a
--- a/SDFileSystem.lib	Fri Mar 11 16:07:41 2016 +0000
+++ b/SDFileSystem.lib	Wed Jul 11 00:59:13 2018 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/SDFileSystem/#7b35d1709458
+http://mbed.org/users/mbed_official/code/SDFileSystem/#dd98b26a168f
--- a/main.cpp	Fri Mar 11 16:07:41 2016 +0000
+++ b/main.cpp	Wed Jul 11 00:59:13 2018 +0000
@@ -1,173 +1,60 @@
-/* 2545_SD_Card Example
-
-Example of writing data to SD card.
-
-Based on FTF2014_lab4 Example
-
-https://developer.mbed.org/teams/Freescale/wiki/FTF2014_workshop
-
-Craig A. Evans, University of Leeds, Mar 2016
-
-*/
-
 #include "mbed.h"
 #include "SDFileSystem.h"
+#include "FXOS8700CQ.h"
+#include "LSM6DS3.h"
 
 // Connections to SD card holder on K64F (SPI interface)
 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
-Serial serial(USBTX, USBRX);  // for PC debug
+Timer t;
+FXOS8700CQ fxos(PTE25,PTE24);
+LSM6DS3 LSM6DS3(PTE25,PTE24);
+Serial pc(USBTX, USBRX);
+Data fxos_acc;
+unsigned long int start_time = 0, end_time = 0;
+uint16_t adc_value;
+AnalogIn pot0(A0), pot1(A1), pot2(A2), pot3(A3);
 
-void delete_file(char filename[]);
+
 
 int main()
 {
-    serial.baud(115200);  // full-speed!
-    serial.printf("#### SD Card Example #####\n");
+    LSM6DS3.begin();
+    fxos.init();
+    double t0, t1;
+    pc.baud(115200);  // full-speed!
+    pc.printf("#### Example #####\n");
     FILE *fp; // this is our file pointer
-    wait(1);
-
-    // Various examples below - can comment out ones you don't need
-
-    /////////////////////// Deleting file example ////////////////////////
-
-    // comment this line out if you don't want to delete the file!
-    delete_file("/sd/test.txt");
-
-    ////////////////////// Simple writing example //////////////////////////
-
-    // open file for writing ('w') - creates file if it doesn't exist and overwrites
-    // if it does. If you wish to add a score onto a list, then you can
-    // append instead 'a'. This will open the file if it exists and start
-    // writing at the end. It will create the file if it doesn't exist.
-    fp = fopen("/sd/topscore.txt", "w");
-    int top_score = 56;  // random example
-
-    if (fp == NULL) {  // if it can't open the file then print error message
-        serial.printf("Error! Unable to open file!\n");
-    } else {  // opened file so can write
-        serial.printf("Writing to file....");
-        fprintf(fp, "%d",top_score); // ensure data type matches
-        serial.printf("Done.\n");
-        fclose(fp);  // ensure you close the file after writing
-    }
-
-    ////////////////////// Simple reading example //////////////////////////
-
-    // now open file for reading
-    fp = fopen("/sd/topscore.txt", "r");
-    int stored_top_score = -1;  // -1 to demonstrate it has changed after reading
-
-    if (fp == NULL) {  // if it can't open the file then print error message
-        serial.printf("Error! Unable to open file!\n");
-    } else {  // opened file so can write
-        fscanf(fp, "%d",&stored_top_score); // ensure data type matches - note address operator (&)
-        serial.printf("Read %d from file.\n",stored_top_score);
-        fclose(fp);  // ensure you close the file after reading
-    }
-
-    ///////////////////// Writing list to file example //////////////////////
+    t.start();
+    t0 = t.read_us();
+    fp = fopen("/sd/Teste1.txt", "wb");
+    //read Accel & Gyro
+    LSM6DS3.readAccel();
+    LSM6DS3.readGyro();
+    start_time = t.read_us();
+    fxos_acc = fxos.get_values();
+    end_time = t.read_us();
+    pc.printf("\nPass time: %d\n", end_time - start_time);
+        //serial send Accel (board)
+    pc.printf("BoardAccelerX[%f]\n",fxos_acc.ax);
+    pc.printf("BoardAccelerY[%f]\n",fxos_acc.ay);
+    pc.printf("BoardAccelerZ[%f]\n",fxos_acc.az);
+       //serial send Gyro
+    pc.printf("GyroX[%f]\n",LSM6DS3.gx);
+    pc.printf("GyroY[%f]\n",LSM6DS3.gy);
+    pc.printf("GyroZ[%f]\n",LSM6DS3.gz);
+        //serial send Accel (lsm6ds33)
+    pc.printf("AccelerX[%f]\n",LSM6DS3.ax);
+    pc.printf("AccelerY[%f]\n",LSM6DS3.ay);
+    pc.printf("AccelerZ[%f]\n",LSM6DS3.az);
     
-    // for this example, I'll create some numbers to write to file in a big list
-    // a data logger for example will usually append to a file - at a reading
-    // at the end rather than creating a new file
-    fp = fopen("/sd/test.txt", "a");
-
-    if (fp == NULL) {  // if it can't open the file then print error message
-        serial.printf("Error! Unable to open file!\n");
-    } else {  // opened file so can write
-        serial.printf("Writing to file....");
-        for(int i = 1; i <= 50; i++) {
-            float dummy = 1000.0F/i;  // dummy variable
-            fprintf(fp, "%d,%f\n",i,dummy);  // print formatted string to file (CSV)
-        }
-        serial.printf("Done.\n");
-        fclose(fp);  // ensure you close the file after writing
-    }
     
-    // you can comment out the writing example to check that the writing has
-    // worked - when you run it after commenting, it should still open the
-    // file that exists on the SD card - assuming you didn't delete it!
-
-    /////////////////////// Reading from file example ////////////////////////
-
-    // now open file for reading...note the 'r'
-    fp = fopen("/sd/test.txt", "r");
     if (fp == NULL) {  // if it can't open the file then print error message
-        serial.printf("Error! Unable to open file!\n");
-    } else {
-        serial.printf("Reading file....\n");
-        int i;    // create suitable variables to store the data in the file
-        float value;
-
-        // in this example, we keep reading (using fscanf) until we reach
-        // the 'end of file'. Note we use the address operator & to write
-        // to the variables. Also the format of the string must match what
-        // is in the file
-        while (fscanf(fp, "%d,%f", &i, &value) != EOF) {
-            serial.printf("%d,%f\n",i,value);
-        }
-        serial.printf("Done.\n");
-        fclose(fp);  // ensure you close the file after reading
+                    pc.printf("Error! Unable to open file!\n");
+    } else {  // opened file so can write
+            fprintf(fp, "%f %f %f \n %f %f %f \n %f %f %f \n", fxos_acc.ax,fxos_acc.ay,fxos_acc.az,LSM6DS3.gx,LSM6DS3.gy,LSM6DS3.gz,LSM6DS3.ax,LSM6DS3.ay,LSM6DS3.az);
+            fclose(fp);  // ensure you close the file after writing
+            t1 = t.read_us(); 
+            pc.printf("The time taken was %lf u-seconds\n", t1-t0);
+            t.stop();
     }
-
-    ///////////////// Advanced Reading from file example ///////////////////
-
-    // the previous example just read the values into variables and printed to
-    // serial, we'll now read files into an array.
-
-    // now open file for reading...note the 'r'
-    fp = fopen("/sd/test.txt", "r");
-
-    int n=0;  // going to store the number of lines in the file
-    int *index_array;  // pointers to create dynamic arrays later
-    float *value_array; // note memory will be in heap rather than on the stack
-
-    if (fp == NULL) {  // if it can't open the file then print error message
-        serial.printf("Error! Unable to open file!\n");
-    } else {
-        serial.printf("Counting lines in file....\n");
-        //Since we may not know the
-        // number of lines in the files ahead of time, we'll first count them
-        // * means scan but don't save
-        while (fscanf(fp, "%*d,%*f") != EOF) {
-            n++;  // increment counter when read a line
-        }
-
-
-        serial.printf("Read %d lines\n",n);
-        serial.printf("Creating dynamic arrays...\n");
-        // calloc creates an array and initilises to 0
-        // malloc returns unitialised array - diffrent syntax
-        index_array = (int *)calloc(n, sizeof (int));
-        value_array = (float *)calloc(n, sizeof (float));
-
-        int i=0;
-        rewind(fp); // 'scrolled' to end of file, so go back to beginning
-        serial.printf("Reading into arrays...\n");
-        while (fscanf(fp, "%d,%f",&index_array[i],&value_array[i]) != EOF) {
-            i++;  // read data into array and increment index
-        }
-        serial.printf("Done.\n");
-        fclose(fp);  // ensure you close the file after reading
-    }
-    
-    // we should now have the data in the arrays, will print to serial to check
-    for(int i=0; i<n ; i++) {
-        serial.printf("[%d] %d,%f\n",i,index_array[i],value_array[i]);
-    } 
-
-    ///////////////////////////////////////////////////
-    serial.printf("End of SD card example\n");
 }
-
-void delete_file(char filename[])
-{
-    serial.printf("Deleting file '%s'...",filename);
-    FILE *fp = fopen(filename, "r");  // try and open file
-    if (fp != NULL) {  // if it does open...
-        fclose(fp);    // close it
-        remove(filename);  // and then delete
-        serial.printf("Done!\n");
-    }
-    // if we can't open it, it doesn't exist and so we can't delete it
-}