menu for accelerometer

Dependencies:   ADXL362 mbed

Committer:
mzpf46
Date:
Wed Nov 08 10:46:19 2017 +0000
Revision:
1:4938aa677cb3
Parent:
0:8d536d5c58c6
Publush;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mzpf46 0:8d536d5c58c6 1 #include "mbed.h"
mzpf46 0:8d536d5c58c6 2 #include "stdio.h"
mzpf46 0:8d536d5c58c6 3 #include "math.h"
mzpf46 0:8d536d5c58c6 4 #include "ADXL362.h"
mzpf46 0:8d536d5c58c6 5 #define HIGH 1
mzpf46 0:8d536d5c58c6 6 #define LOW 0
mzpf46 0:8d536d5c58c6 7 DigitalOut myled1(LED1); /* LED1 */
mzpf46 0:8d536d5c58c6 8 Serial pc(USBTX, USBRX);
mzpf46 0:8d536d5c58c6 9 ADXL362 adxl362(p11, p12, p13, p10);
mzpf46 0:8d536d5c58c6 10 LocalFileSystem local("local");
mzpf46 0:8d536d5c58c6 11 int matlabdata;
mzpf46 0:8d536d5c58c6 12 char usercmd;
mzpf46 0:8d536d5c58c6 13
mzpf46 0:8d536d5c58c6 14 char N[1000]; //Number of samples
mzpf46 0:8d536d5c58c6 15 char T [1000]; //Sample period
mzpf46 0:8d536d5c58c6 16
mzpf46 0:8d536d5c58c6 17
mzpf46 0:8d536d5c58c6 18 int main()
mzpf46 0:8d536d5c58c6 19 {
mzpf46 0:8d536d5c58c6 20 FILE *samplesettings; //Create file with pointer
mzpf46 1:4938aa677cb3 21 FILE *timesettings;
mzpf46 0:8d536d5c58c6 22
mzpf46 0:8d536d5c58c6 23
mzpf46 1:4938aa677cb3 24 char res[100];//string to store user command
mzpf46 1:4938aa677cb3 25
mzpf46 1:4938aa677cb3 26 matlabdata=pc.scanf("%s",res);//Get user command from matlab
mzpf46 1:4938aa677cb3 27
mzpf46 1:4938aa677cb3 28 while(1)
mzpf46 1:4938aa677cb3 29 {
mzpf46 1:4938aa677cb3 30 if(!strcmp(res,"1")==0)//if user command in matlab is 1 write the sample settings into a file
mzpf46 0:8d536d5c58c6 31 {
mzpf46 0:8d536d5c58c6 32 myled1 = HIGH;
mzpf46 1:4938aa677cb3 33 char N[1000];//To store the number of samples which is received from the matlab
mzpf46 1:4938aa677cb3 34 pc.scanf("%s\n",&N);//to get the number of samples input from the matlab
mzpf46 0:8d536d5c58c6 35 samplesettings = fopen("/local/samplesettings.txt", "w");//Open file for writing
mzpf46 1:4938aa677cb3 36 fprintf(samplesettings,"%s\n",N); //Writes settings values onto file
mzpf46 1:4938aa677cb3 37 fclose(samplesettings);//close file
mzpf46 0:8d536d5c58c6 38 break;
mzpf46 0:8d536d5c58c6 39
mzpf46 1:4938aa677cb3 40
mzpf46 0:8d536d5c58c6 41 }
mzpf46 1:4938aa677cb3 42 else if(!strcmp(res,"2")==0)//If user command is 2 search the file for sample settings
mzpf46 0:8d536d5c58c6 43 {
mzpf46 0:8d536d5c58c6 44 //Define variables for output
mzpf46 1:4938aa677cb3 45 char value1[1000];
mzpf46 0:8d536d5c58c6 46 samplesettings = fopen("/local/samplesettings.txt" , "r"); //Open file for reading
mzpf46 1:4938aa677cb3 47 fseek(samplesettings, 0 ,SEEK_SET); //Sets cursor to start of file
mzpf46 1:4938aa677cb3 48 fscanf(samplesettings,"%s\n", value1);//Scans fo the value of N
mzpf46 1:4938aa677cb3 49 pc.printf("%s\n", value1);//Prints the value of N
mzpf46 0:8d536d5c58c6 50 fclose(samplesettings); //Close file
mzpf46 1:4938aa677cb3 51 break;
mzpf46 1:4938aa677cb3 52
mzpf46 0:8d536d5c58c6 53 }
mzpf46 1:4938aa677cb3 54 else if(!strcmp(res,"3")==0)//If user command recieved is 3 then write the time settings into a file
mzpf46 1:4938aa677cb3 55 {
mzpf46 1:4938aa677cb3 56 char T[1000];//To store value of T recieved from matlab
mzpf46 1:4938aa677cb3 57 pc.scanf("%s\n",&T);//To scan value of T from matlab
mzpf46 1:4938aa677cb3 58 timesettings = fopen("/local/timesettings.txt", "w");//Open file for writing
mzpf46 1:4938aa677cb3 59 fprintf(timesettings,"%s\n",T); //Writes settings values onto file
mzpf46 1:4938aa677cb3 60 fclose(timesettings);//Close file
mzpf46 1:4938aa677cb3 61 break;
mzpf46 1:4938aa677cb3 62
mzpf46 1:4938aa677cb3 63 }
mzpf46 1:4938aa677cb3 64 else if(!strcmp(res,"4")==0)//If 4 is recieved as a user command then read the time settings
mzpf46 1:4938aa677cb3 65 {
mzpf46 1:4938aa677cb3 66 //Define variables for output
mzpf46 1:4938aa677cb3 67 char value2[100];
mzpf46 1:4938aa677cb3 68 samplesettings = fopen("/local/timesettings.txt" , "r"); //Open file for reading
mzpf46 1:4938aa677cb3 69 fseek(timesettings, 0 ,SEEK_SET); //Sets cursor to start of file
mzpf46 1:4938aa677cb3 70 fscanf(timesettings,"%s\n", value2);//Reads the time period from the file
mzpf46 1:4938aa677cb3 71 pc.printf("%s\n", value2);//Outsputs the time period
mzpf46 1:4938aa677cb3 72 fclose(timesettings); //Close file
mzpf46 1:4938aa677cb3 73 break;
mzpf46 1:4938aa677cb3 74 }
mzpf46 1:4938aa677cb3 75 else if(!strcmp(res,"5")==0)//If the user command is 5 then we collect data
mzpf46 1:4938aa677cb3 76 {
mzpf46 1:4938aa677cb3 77 //Define vaiables
mzpf46 1:4938aa677cb3 78 adxl362.init_spi();
mzpf46 1:4938aa677cb3 79 adxl362.init_adxl362();
mzpf46 1:4938aa677cb3 80 wait(0.1);
mzpf46 1:4938aa677cb3 81 int8_t xdata, ydata, zdata;
mzpf46 1:4938aa677cb3 82 for(int i=0; i<atoi(N); i++)
mzpf46 1:4938aa677cb3 83 {
mzpf46 1:4938aa677cb3 84 adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);//Fetch readings from accelerometer
mzpf46 1:4938aa677cb3 85 pc.printf("%+04d\n", xdata);
mzpf46 1:4938aa677cb3 86 pc.printf("%+04d\n", ydata);
mzpf46 1:4938aa677cb3 87 pc.printf("%+04d\n", zdata);
mzpf46 1:4938aa677cb3 88 wait(atoi(T));
mzpf46 1:4938aa677cb3 89
mzpf46 1:4938aa677cb3 90 //Open data file
mzpf46 1:4938aa677cb3 91 FILE *data;
mzpf46 1:4938aa677cb3 92 data = fopen("/local/data.txt", "w");
mzpf46 1:4938aa677cb3 93 //Data collection loop using sample rate and number of samples
mzpf46 1:4938aa677cb3 94 for(int i=0; i<atoi(N); i++)
mzpf46 1:4938aa677cb3 95 {
mzpf46 1:4938aa677cb3 96 //Get accelerometer data
mzpf46 1:4938aa677cb3 97 adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);
mzpf46 1:4938aa677cb3 98 //Print data to data file
mzpf46 1:4938aa677cb3 99 fprintf(data, "%+04d", xdata);
mzpf46 1:4938aa677cb3 100 fprintf(data, "%+04d", ydata);
mzpf46 1:4938aa677cb3 101 fprintf(data, "%+04d", zdata);
mzpf46 1:4938aa677cb3 102 //Attempt to print same data to MATLAB if connection is not null
mzpf46 1:4938aa677cb3 103 if(pc != NULL)
mzpf46 1:4938aa677cb3 104 {
mzpf46 1:4938aa677cb3 105 pc.printf("%+04d\n", xdata);
mzpf46 1:4938aa677cb3 106 pc.printf("%+04d\n", ydata);
mzpf46 1:4938aa677cb3 107 pc.printf("%+04d\n", zdata);
mzpf46 1:4938aa677cb3 108 }
mzpf46 1:4938aa677cb3 109 //Pause to ensure sample rate
mzpf46 1:4938aa677cb3 110 wait(atoi(T));
mzpf46 1:4938aa677cb3 111 }
mzpf46 1:4938aa677cb3 112 fclose(data);
mzpf46 1:4938aa677cb3 113 break;
mzpf46 1:4938aa677cb3 114
mzpf46 1:4938aa677cb3 115 }
mzpf46 1:4938aa677cb3 116 }
mzpf46 1:4938aa677cb3 117 }
mzpf46 0:8d536d5c58c6 118 }