
1
Dependencies: MMA8451Q SDFileSystemv2 TSI mbed
main.cpp@0:e12892d110bd, 2015-11-25 (annotated)
- Committer:
- iLyngklip
- Date:
- Wed Nov 25 08:53:40 2015 +0000
- Revision:
- 0:e12892d110bd
v1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iLyngklip | 0:e12892d110bd | 1 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 2 | // Includes # |
iLyngklip | 0:e12892d110bd | 3 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 4 | #include "mbed.h" // Mbed library |
iLyngklip | 0:e12892d110bd | 5 | #include "SDFileSystem.h" // SD Libary |
iLyngklip | 0:e12892d110bd | 6 | #include "MMA8451Q.h" // Built-in Accelerometer Libary |
iLyngklip | 0:e12892d110bd | 7 | #include "TSISensor.h" // Built-in Touch-sensor Libary |
iLyngklip | 0:e12892d110bd | 8 | |
iLyngklip | 0:e12892d110bd | 9 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 10 | // Define settings # |
iLyngklip | 0:e12892d110bd | 11 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 12 | #define SD_CARD 1 |
iLyngklip | 0:e12892d110bd | 13 | |
iLyngklip | 0:e12892d110bd | 14 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 15 | // Adresses for talking to the I2C sensors # |
iLyngklip | 0:e12892d110bd | 16 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) // Accelerometer |
iLyngklip | 0:e12892d110bd | 18 | |
iLyngklip | 0:e12892d110bd | 19 | |
iLyngklip | 0:e12892d110bd | 20 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 21 | // Constructors # |
iLyngklip | 0:e12892d110bd | 22 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 23 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); // Built-in Accelerometer |
iLyngklip | 0:e12892d110bd | 24 | SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); // the pinout on the mbed Cool Components workshop board |
iLyngklip | 0:e12892d110bd | 25 | Serial pc(USBTX, USBRX); // Serial w/ PC through wire |
iLyngklip | 0:e12892d110bd | 26 | TSISensor tsi; //-------------------------------------------// TouchSensor på Mbed'en |
iLyngklip | 0:e12892d110bd | 27 | |
iLyngklip | 0:e12892d110bd | 28 | |
iLyngklip | 0:e12892d110bd | 29 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 30 | // Global Variables # |
iLyngklip | 0:e12892d110bd | 31 | // ######################################################### |
iLyngklip | 0:e12892d110bd | 32 | int fileOpen = 0; |
iLyngklip | 0:e12892d110bd | 33 | char fileName[23] = "/sd/mydir/LOGGER00.CSV"; |
iLyngklip | 0:e12892d110bd | 34 | int T1 = 0; |
iLyngklip | 0:e12892d110bd | 35 | int T2 = 0; |
iLyngklip | 0:e12892d110bd | 36 | |
iLyngklip | 0:e12892d110bd | 37 | |
iLyngklip | 0:e12892d110bd | 38 | |
iLyngklip | 0:e12892d110bd | 39 | |
iLyngklip | 0:e12892d110bd | 40 | |
iLyngklip | 0:e12892d110bd | 41 | |
iLyngklip | 0:e12892d110bd | 42 | int main(){ |
iLyngklip | 0:e12892d110bd | 43 | |
iLyngklip | 0:e12892d110bd | 44 | |
iLyngklip | 0:e12892d110bd | 45 | pc.baud(9600); |
iLyngklip | 0:e12892d110bd | 46 | Timer t; |
iLyngklip | 0:e12892d110bd | 47 | |
iLyngklip | 0:e12892d110bd | 48 | |
iLyngklip | 0:e12892d110bd | 49 | T1 = tsi.readDistance(); |
iLyngklip | 0:e12892d110bd | 50 | |
iLyngklip | 0:e12892d110bd | 51 | // ---------------------------------------------------------- |
iLyngklip | 0:e12892d110bd | 52 | // Setup part - This only runs ONCE |
iLyngklip | 0:e12892d110bd | 53 | // ---------------------------------------------------------- |
iLyngklip | 0:e12892d110bd | 54 | t.start(); |
iLyngklip | 0:e12892d110bd | 55 | t.reset(); |
iLyngklip | 0:e12892d110bd | 56 | #if SD_CARD |
iLyngklip | 0:e12892d110bd | 57 | mkdir("/sd/mydir", 0777); // Making the folder in where to put the file |
iLyngklip | 0:e12892d110bd | 58 | int i = 1; |
iLyngklip | 0:e12892d110bd | 59 | nameFinder: |
iLyngklip | 0:e12892d110bd | 60 | fileName[18] = '.'; // Making the dot in .CSV |
iLyngklip | 0:e12892d110bd | 61 | fileName[17] = i%10 + '0'; // Numbering the filename |
iLyngklip | 0:e12892d110bd | 62 | fileName[16] = i/10 + '0'; // to something not already there |
iLyngklip | 0:e12892d110bd | 63 | i++; |
iLyngklip | 0:e12892d110bd | 64 | FILE *fp = fopen(fileName, "r" ); // This checks if there is a file called fileName |
iLyngklip | 0:e12892d110bd | 65 | if(fp != NULL){ |
iLyngklip | 0:e12892d110bd | 66 | printf("Going to namefinder %i \n", i); |
iLyngklip | 0:e12892d110bd | 67 | goto nameFinder; |
iLyngklip | 0:e12892d110bd | 68 | } |
iLyngklip | 0:e12892d110bd | 69 | |
iLyngklip | 0:e12892d110bd | 70 | if(fp == NULL){ |
iLyngklip | 0:e12892d110bd | 71 | printf("Wuhu"); |
iLyngklip | 0:e12892d110bd | 72 | fp = fopen(fileName, "w" ); // This creates a file called fileName |
iLyngklip | 0:e12892d110bd | 73 | if(fp == NULL){ |
iLyngklip | 0:e12892d110bd | 74 | printf("\nFAILED\n"); |
iLyngklip | 0:e12892d110bd | 75 | error("failed"); |
iLyngklip | 0:e12892d110bd | 76 | } |
iLyngklip | 0:e12892d110bd | 77 | } |
iLyngklip | 0:e12892d110bd | 78 | #endif |
iLyngklip | 0:e12892d110bd | 79 | |
iLyngklip | 0:e12892d110bd | 80 | |
iLyngklip | 0:e12892d110bd | 81 | |
iLyngklip | 0:e12892d110bd | 82 | #if SD_CARD |
iLyngklip | 0:e12892d110bd | 83 | fprintf(fp, "X,Y,Z,Altitude,Temperature \n"); // Prints a header telling Excel what sort of information is in which place |
iLyngklip | 0:e12892d110bd | 84 | |
iLyngklip | 0:e12892d110bd | 85 | |
iLyngklip | 0:e12892d110bd | 86 | fprintf(fp, "Hej, Hej, BOV \n"); |
iLyngklip | 0:e12892d110bd | 87 | |
iLyngklip | 0:e12892d110bd | 88 | |
iLyngklip | 0:e12892d110bd | 89 | #endif |
iLyngklip | 0:e12892d110bd | 90 | |
iLyngklip | 0:e12892d110bd | 91 | |
iLyngklip | 0:e12892d110bd | 92 | // ---------------------------------------------------------- |
iLyngklip | 0:e12892d110bd | 93 | // Loop part - This runs AFTER setup |
iLyngklip | 0:e12892d110bd | 94 | // ---------------------------------------------------------- |
iLyngklip | 0:e12892d110bd | 95 | while(1){ |
iLyngklip | 0:e12892d110bd | 96 | /* |
iLyngklip | 0:e12892d110bd | 97 | float XYZ[3]; |
iLyngklip | 0:e12892d110bd | 98 | acc.getAccAllAxis(XYZ); |
iLyngklip | 0:e12892d110bd | 99 | |
iLyngklip | 0:e12892d110bd | 100 | for(int i = 0; i < 3; i++){ |
iLyngklip | 0:e12892d110bd | 101 | printf("XYZ[%i]: %f", i, XYZ[i]); |
iLyngklip | 0:e12892d110bd | 102 | }; |
iLyngklip | 0:e12892d110bd | 103 | */ |
iLyngklip | 0:e12892d110bd | 104 | float x = 0; |
iLyngklip | 0:e12892d110bd | 105 | float y = 0; |
iLyngklip | 0:e12892d110bd | 106 | float z = 0; |
iLyngklip | 0:e12892d110bd | 107 | x = acc.getAccX(); // |
iLyngklip | 0:e12892d110bd | 108 | y = acc.getAccY(); //-> Getting accelerometer-information |
iLyngklip | 0:e12892d110bd | 109 | z = acc.getAccZ(); // |
iLyngklip | 0:e12892d110bd | 110 | fprintf(fp, "%f, %f, %f, %f \n", x, y, z,t.read()); |
iLyngklip | 0:e12892d110bd | 111 | printf("X: %f\t Y: %f\t Z: %f \n", x, y, z); |
iLyngklip | 0:e12892d110bd | 112 | |
iLyngklip | 0:e12892d110bd | 113 | T2 = tsi.readDistance(); |
iLyngklip | 0:e12892d110bd | 114 | if(T2-T1 > 0.5){ |
iLyngklip | 0:e12892d110bd | 115 | break; // Makes the loop stop. |
iLyngklip | 0:e12892d110bd | 116 | } |
iLyngklip | 0:e12892d110bd | 117 | |
iLyngklip | 0:e12892d110bd | 118 | wait(0.01); |
iLyngklip | 0:e12892d110bd | 119 | }// while |
iLyngklip | 0:e12892d110bd | 120 | |
iLyngklip | 0:e12892d110bd | 121 | fclose(fp); // Closes the SD card. Do this after every write |
iLyngklip | 0:e12892d110bd | 122 | |
iLyngklip | 0:e12892d110bd | 123 | }// main |