PARTYYYY

Dependencies:   mbed MMA8452

Committer:
ThierryLeonard
Date:
Wed Sep 06 03:46:20 2017 +0000
Revision:
11:09317efe9bb5
Parent:
10:2836530d9a5e
Beautify LOL still ugly

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evrast 0:c2282db9d19e 1 #include "Accelerometre.h"
evrast 0:c2282db9d19e 2
ThierryLeonard 11:09317efe9bb5 3 namespace
ThierryLeonard 11:09317efe9bb5 4 {
ThierryLeonard 11:09317efe9bb5 5 const double PI = 3.14159265359;
ThierryLeonard 11:09317efe9bb5 6 const int WRITE_DATA = 0x38;
ThierryLeonard 11:09317efe9bb5 7 const int READ_DATA = 0x39;
ThierryLeonard 11:09317efe9bb5 8 }
evrast 6:909e7877d915 9 Accelerometre::Accelerometre():i2c(p28,p27),pc(USBTX, USBRX),acc(p28, p27, 40000){
evrast 4:ab14f0e33f2b 10
evrast 4:ab14f0e33f2b 11 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
evrast 6:909e7877d915 12 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_2G);
evrast 4:ab14f0e33f2b 13 acc.setDataRate(MMA8452::RATE_100);
evrast 4:ab14f0e33f2b 14
evrast 3:56cd9dff3b5f 15 }
evrast 3:56cd9dff3b5f 16
evrast 4:ab14f0e33f2b 17 void Accelerometre::readxyzAngle(double *Angle){
evrast 4:ab14f0e33f2b 18 double x=0, y=0, z=0;
evrast 4:ab14f0e33f2b 19 acc.readXYZGravity(&x,&y,&z);
evrast 4:ab14f0e33f2b 20 *Angle = AngleCalculation(z);
evrast 3:56cd9dff3b5f 21
evrast 3:56cd9dff3b5f 22 }
evrast 3:56cd9dff3b5f 23
evrast 4:ab14f0e33f2b 24 double Accelerometre::AngleCalculation(double ZValue){
evrast 4:ab14f0e33f2b 25 if(ZValue>1){
evrast 4:ab14f0e33f2b 26 ZValue = 1;
evrast 4:ab14f0e33f2b 27 }
evrast 6:909e7877d915 28 if(ZValue <-1){
evrast 6:909e7877d915 29 ZValue = -1;
evrast 6:909e7877d915 30 }
evrast 5:70db90b673b9 31 double angle =std::acos(ZValue);
ThierryLeonard 10:2836530d9a5e 32 // std::acos return a value from 0 to pi, adjust it to 0 to PI/2 ( 0 , 90 )
ThierryLeonard 10:2836530d9a5e 33 if(angle > PI/2)
ThierryLeonard 10:2836530d9a5e 34 {
ThierryLeonard 10:2836530d9a5e 35 angle = PI - angle;
ThierryLeonard 10:2836530d9a5e 36 }
evrast 6:909e7877d915 37 return (angle*180/ PI);
evrast 4:ab14f0e33f2b 38 }
evrast 4:ab14f0e33f2b 39
evrast 0:c2282db9d19e 40
evrast 3:56cd9dff3b5f 41 void Accelerometre::writeByte(int regis,int data){
evrast 0:c2282db9d19e 42 pc.printf("Reading single byte\n");
evrast 0:c2282db9d19e 43 i2c.start();
evrast 3:56cd9dff3b5f 44 i2c.write(WRITE_DATA); // A write to device
evrast 0:c2282db9d19e 45 i2c.write(regis); // Register to read from (acceleration in X)
evrast 3:56cd9dff3b5f 46 i2c.write(data);
evrast 0:c2282db9d19e 47 i2c.stop();
evrast 0:c2282db9d19e 48 pc.printf("end\n");
evrast 5:70db90b673b9 49 }
evrast 5:70db90b673b9 50