menu for accelerometer

Dependencies:   ADXL362 mbed

menu_menu.cpp

Committer:
mzpf46
Date:
2017-11-08
Revision:
1:4938aa677cb3
Parent:
0:8d536d5c58c6

File content as of revision 1:4938aa677cb3:

#include "mbed.h"
#include "stdio.h"
#include "math.h"
#include "ADXL362.h"
#define HIGH 1
#define LOW 0
DigitalOut myled1(LED1); /* LED1 */
Serial pc(USBTX, USBRX);
ADXL362 adxl362(p11, p12, p13, p10);
LocalFileSystem local("local"); 
int matlabdata;
char usercmd;
    
char N[1000]; //Number of samples
char T [1000]; //Sample period 


int main()
{
    FILE *samplesettings; //Create file with pointer
    FILE *timesettings;
    
    
    char res[100];//string to store user command
        
    matlabdata=pc.scanf("%s",res);//Get user command from matlab
   
while(1)
{    
    if(!strcmp(res,"1")==0)//if user command in matlab is 1 write the sample settings into a file 
        {  
        myled1 = HIGH;
        char N[1000];//To store the number of samples which is received from the matlab
        pc.scanf("%s\n",&N);//to get the number of  samples input from the matlab
        samplesettings = fopen("/local/samplesettings.txt", "w");//Open file for writing
        fprintf(samplesettings,"%s\n",N); //Writes settings values onto file
        fclose(samplesettings);//close file
        break;


            }
            else if(!strcmp(res,"2")==0)//If user command is 2 search the file for sample settings
            {
                        //Define variables for output
                        char value1[1000];
                        samplesettings = fopen("/local/samplesettings.txt" , "r"); //Open file for reading
                        fseek(samplesettings, 0 ,SEEK_SET); //Sets cursor to start of file
                        fscanf(samplesettings,"%s\n", value1);//Scans fo the value of N
                        pc.printf("%s\n", value1);//Prints the value of N
                        fclose(samplesettings); //Close file
                        break;

                        }
                        else if(!strcmp(res,"3")==0)//If user command recieved is 3 then write the time settings into a file
                        {
                                    char T[1000];//To store value of T recieved from matlab
                                    pc.scanf("%s\n",&T);//To scan value of T from matlab
                                    timesettings = fopen("/local/timesettings.txt", "w");//Open file for writing
                                    fprintf(timesettings,"%s\n",T); //Writes settings values onto file
                                    fclose(timesettings);//Close file
                                    break;
                                    
                                    }
                                    else if(!strcmp(res,"4")==0)//If 4 is recieved as a user command then read the time settings 
                                    {
                                    //Define variables for output
                                    char value2[100];
                                    samplesettings = fopen("/local/timesettings.txt" , "r"); //Open file for reading
                                    fseek(timesettings, 0 ,SEEK_SET); //Sets cursor to start of file
                                    fscanf(timesettings,"%s\n", value2);//Reads the time period from the file
                                    pc.printf("%s\n", value2);//Outsputs the time period 
                                    fclose(timesettings); //Close file
                                    break; 
                                    }
                                    else if(!strcmp(res,"5")==0)//If the user command is 5 then we collect data 
                                    {
                                        //Define vaiables 
                                        adxl362.init_spi();
                                        adxl362.init_adxl362();
                                        wait(0.1);
                                        int8_t xdata, ydata, zdata;
                                        for(int i=0; i<atoi(N); i++)
                                        {
                                            adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);//Fetch readings from accelerometer
                                            pc.printf("%+04d\n", xdata);
                                            pc.printf("%+04d\n", ydata);
                                            pc.printf("%+04d\n", zdata);
                                            wait(atoi(T));
                                            
                                            //Open data file
                                            FILE *data;
                                            data = fopen("/local/data.txt", "w");
                                            //Data collection loop using sample rate and number of samples 
                                            for(int i=0; i<atoi(N); i++)
                                            {
                                                //Get accelerometer data
                                                adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);
                                                //Print data to data file
                                                fprintf(data, "%+04d", xdata);
                                                fprintf(data, "%+04d", ydata);
                                                fprintf(data, "%+04d", zdata);
                                                //Attempt to print same data to MATLAB if connection is not null
                                                if(pc != NULL)
                                                {
                                                    pc.printf("%+04d\n", xdata);
                                                    pc.printf("%+04d\n", ydata);
                                                    pc.printf("%+04d\n", zdata);
                                                    }
                                                    //Pause to ensure sample rate
                                                    wait(atoi(T));
                                                    }
                                                    fclose(data);
                                                    break;
                                                    
     }
     }
     }                                               
}