Alexandre Lemay
/
APP1_s5_A17
PARTYYYY
Accelerometre.cpp@11:09317efe9bb5, 2017-09-06 (annotated)
- 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?
User | Revision | Line number | New 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 |