1

Dependencies:   MMA8451Q SDFileSystemv2 TSI mbed

Committer:
iLyngklip
Date:
Wed Nov 25 08:53:40 2015 +0000
Revision:
0:e12892d110bd
v1

Who changed what in which revision?

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