base program for tilt measurement

Dependencies:   COG4050_ADT7420 ADXL362

Fork of COG4050_adxl355_adxl357-ver2 by ADI_CAC

main.cpp

Committer:
vtoffoli
Date:
2018-08-21
Revision:
8:9e6ead2ee8d7
Parent:
7:5aaa09c40283
Child:
9:6c803986dbde

File content as of revision 8:9e6ead2ee8d7:

#include "mbed.h"
#include <math.h>
#include <inttypes.h>
#include "ADXL355.h"
#include "ADXRS290.h"
#include "CALIBRATION.h"
 
Serial pc(USBTX, USBRX);
 
ADXL355 accl(SPI1_CS0, SPI1_MOSI, SPI1_MISO, SPI1_SCLK);    // PMOD port
ADXRS290 gyro(SPI0_CS2, SPI0_MOSI, SPI0_MISO, SPI0_SCLK);   // PMOD port
CALIBRATION test;
float angle[3][12] = {  {-55, -125, -147, 33, -128, 52, 0, 0, 0, 0, 0, 0},
                        {6, -6, 20, -20, -69, 69, 0, 0, 0, 0, 0, 0 }, 
                        {1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}}; 
    float meas[3][12] =  {  {-0.09, 0.16,  -0.31,  0.37,  0.91,  -0.88},
                            {-0.78, 0.81,  -0.46,  0.49,  -0.28,  0.32},
                            {0.54,  -0.55, -0.78,  0.76,  -0.20,  0.20}};   
int main(){
    pc.baud(9600);
    pc.printf("SPI ADXL355 and ADXL357 Demo\n");
    pc.printf("GET device ID\n");
    accl.reset();
    uint8_t d; 
    d=accl.read_reg(accl.DEVID_AD);
    pc.printf("AD id = %x \r\n",d);
    d=accl.read_reg(accl.DEVID_MST);
    pc.printf("MEMS id = %x \r\n",d);
    d=accl.read_reg(accl.PARTID);
    pc.printf("device id = %x \r\n",d);
    d=accl.read_reg(accl.REVID);
    pc.printf("revision id = %x \r\n",d);
    pc.printf("GET device data [x, y, z, t] \r\n");
    accl.set_power_ctl_reg(accl.MEASUREMENT);
    d=accl.read_reg(accl.POWER_CTL);
    pc.printf("power control on measurement mode = %x \r\n",d);
    float x, y,z;
    float t;
    // save data info a file
    for(int i=0; i<100; i++) {
        x = accl.convert(accl.scanx())*accl.axis355_sens;
        y = accl.convert(accl.scany())*accl.axis355_sens;
        z = accl.convert(accl.scanz())*accl.axis355_sens;
        t = 25+float(accl.scant()-1852)/(-9.05);
        pc.printf("%f \t %f \t %f  \t %f \r\n" , x,y,z,t);
        wait(0.1);}    // test the calibration procedure
   // test.matrix_reset();
   // test.matrix_g(angle);
   // test.matrix_x(meas);
   // int i, j;
 
   /* output each array element's value */
   /*
    pc.printf("power control on measurement mode = %x \r\n",d);
   for ( i = 0; i < 3; i++ ) {
         for ( j = 0; j < 12; j++ ) {
             pc.printf( "%f\n", i,j, test.g_matrix[i][j] );
      }
    pc.printf("\r\n");
     */ 
      
   //}
    
}