PARTYYYY

Dependencies:   mbed MMA8452

Accelerometre.cpp

Committer:
ThierryLeonard
Date:
2017-09-06
Revision:
10:2836530d9a5e
Parent:
6:909e7877d915
Child:
11:09317efe9bb5

File content as of revision 10:2836530d9a5e:

#include "Accelerometre.h"


Accelerometre::Accelerometre():i2c(p28,p27),pc(USBTX, USBRX),acc(p28, p27, 40000){
    
   acc.setBitDepth(MMA8452::BIT_DEPTH_12);
   acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_2G);
   acc.setDataRate(MMA8452::RATE_100);
   
    }
    
void Accelerometre::readxyzAngle(double *Angle){
    double x=0, y=0, z=0;
    acc.readXYZGravity(&x,&y,&z);
    *Angle = AngleCalculation(z);
    
}
    
double Accelerometre::AngleCalculation(double  ZValue){
    if(ZValue>1){
        ZValue = 1;
    }
    if(ZValue <-1){
        ZValue = -1;    
    }
    double  angle =std::acos(ZValue);
     // std::acos return a value from 0 to pi, adjust it to 0 to PI/2 ( 0 , 90 )
    if(angle > PI/2)
    {
        angle = PI - angle;
    }
    return (angle*180/ PI);
}
    
    
//int Accelerometre::readSingleByte(int regis){
//    int c;
//    pc.printf("Reading single byte\n");  
//    i2c.start();
//    int a=i2c.write(WRITE_DATA);  // A write to device
//    i2c.write(regis); // Register to read from (acceleration in X)
//    i2c.start();        // Need to send start condition here
//    i2c.write(READ_DATA); // tell devide you want to read
//    c=i2c.read(0);      
//    i2c.stop();
//    pc.printf("value is %d\n", c);
//    pc.printf("end\n");
//    return c;
//    }
    

void Accelerometre::writeByte(int regis,int data){
    pc.printf("Reading single byte\n");  
    i2c.start();
    i2c.write(WRITE_DATA);  // A write to device
    i2c.write(regis); // Register to read from (acceleration in X)
    i2c.write(data);
    i2c.stop();
    pc.printf("end\n");
    }