Committer:
asy_paris90
Date:
Mon Jul 09 02:17:49 2012 +0000
Revision:
0:f37d59175b91
Accelerometer7361

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asy_paris90 0:f37d59175b91 1 #include "Accelerometer.h"
asy_paris90 0:f37d59175b91 2 Accelerometer::Accelerometer(PinName xoutPin,PinName youtPin,PinName zoutPin,PinName sleepPin,PinName zeroGDetectPin,PinName gSelectPin):
asy_paris90 0:f37d59175b91 3
asy_paris90 0:f37d59175b91 4 xout(xoutPin),yout(youtPin),zout(zoutPin),zeroGDetect(zeroGDetectPin),sleep(sleepPin),gSelect(gSelectPin),zeroG(zeroGDetectPin)
asy_paris90 0:f37d59175b91 5 {
asy_paris90 0:f37d59175b91 6 sleep = 1; //normal mode
asy_paris90 0:f37d59175b91 7 gSelect = 0; //1.5G mode
asy_paris90 0:f37d59175b91 8 scale = 0.8;
asy_paris90 0:f37d59175b91 9 }
asy_paris90 0:f37d59175b91 10
asy_paris90 0:f37d59175b91 11 float Accelerometer ::getAccel(){
asy_paris90 0:f37d59175b91 12 float x = getAccelX();
asy_paris90 0:f37d59175b91 13 float y = getAccelY();
asy_paris90 0:f37d59175b91 14 float z = getAccelZ();
asy_paris90 0:f37d59175b91 15 return sqrt (x*x + y*y + z*z);
asy_paris90 0:f37d59175b91 16
asy_paris90 0:f37d59175b91 17 }
asy_paris90 0:f37d59175b91 18
asy_paris90 0:f37d59175b91 19 float Accelerometer :: getAccelX(){
asy_paris90 0:f37d59175b91 20 return ((xout*3.3)-1.65)/scale;
asy_paris90 0:f37d59175b91 21 }
asy_paris90 0:f37d59175b91 22
asy_paris90 0:f37d59175b91 23 float Accelerometer :: getAccelY(){
asy_paris90 0:f37d59175b91 24 return ((yout*3.3)-1.65)/scale;
asy_paris90 0:f37d59175b91 25 }
asy_paris90 0:f37d59175b91 26
asy_paris90 0:f37d59175b91 27 float Accelerometer :: getAccelZ(){
asy_paris90 0:f37d59175b91 28 return ((zout*3.3)-1.65)/scale;
asy_paris90 0:f37d59175b91 29 }
asy_paris90 0:f37d59175b91 30
asy_paris90 0:f37d59175b91 31 float Accelerometer :: getTiltX() {
asy_paris90 0:f37d59175b91 32
asy_paris90 0:f37d59175b91 33 float x =getAccelX();
asy_paris90 0:f37d59175b91 34 float y =getAccelY();
asy_paris90 0:f37d59175b91 35 float z =getAccelZ();
asy_paris90 0:f37d59175b91 36 float a =sqrt(x*x + y*y + z*z);
asy_paris90 0:f37d59175b91 37 return asin (x/a);
asy_paris90 0:f37d59175b91 38
asy_paris90 0:f37d59175b91 39 }
asy_paris90 0:f37d59175b91 40
asy_paris90 0:f37d59175b91 41 float Accelerometer :: getTiltY(){
asy_paris90 0:f37d59175b91 42
asy_paris90 0:f37d59175b91 43 float x =getAccelX();
asy_paris90 0:f37d59175b91 44 float y =getAccelY();
asy_paris90 0:f37d59175b91 45 float z =getAccelZ();
asy_paris90 0:f37d59175b91 46 float a =sqrt(x*x + y*y + z*z);
asy_paris90 0:f37d59175b91 47 return asin (y/a);
asy_paris90 0:f37d59175b91 48
asy_paris90 0:f37d59175b91 49 }
asy_paris90 0:f37d59175b91 50
asy_paris90 0:f37d59175b91 51 float Accelerometer :: getTiltZ(){
asy_paris90 0:f37d59175b91 52
asy_paris90 0:f37d59175b91 53 float x =getAccelX();
asy_paris90 0:f37d59175b91 54 float y =getAccelY();
asy_paris90 0:f37d59175b91 55 float z =getAccelZ();
asy_paris90 0:f37d59175b91 56 float a =sqrt(x*x + y*y + z*z);
asy_paris90 0:f37d59175b91 57 return asin (z/a);
asy_paris90 0:f37d59175b91 58
asy_paris90 0:f37d59175b91 59 }
asy_paris90 0:f37d59175b91 60
asy_paris90 0:f37d59175b91 61 void Accelerometer :: setScale(Scale scale){
asy_paris90 0:f37d59175b91 62 switch (scale){
asy_paris90 0:f37d59175b91 63
asy_paris90 0:f37d59175b91 64 case SCALE_1_5G:
asy_paris90 0:f37d59175b91 65 this->scale =0.8;
asy_paris90 0:f37d59175b91 66 gSelect = 0;
asy_paris90 0:f37d59175b91 67 break;
asy_paris90 0:f37d59175b91 68 case SCALE_6G:
asy_paris90 0:f37d59175b91 69 this->scale = 0.206;
asy_paris90 0:f37d59175b91 70 gSelect = 1;
asy_paris90 0:f37d59175b91 71 break;
asy_paris90 0:f37d59175b91 72
asy_paris90 0:f37d59175b91 73 }
asy_paris90 0:f37d59175b91 74
asy_paris90 0:f37d59175b91 75 }
asy_paris90 0:f37d59175b91 76
asy_paris90 0:f37d59175b91 77
asy_paris90 0:f37d59175b91 78 void Accelerometer ::setSleep(bool on){
asy_paris90 0:f37d59175b91 79 sleep= !on;
asy_paris90 0:f37d59175b91 80 }
asy_paris90 0:f37d59175b91 81
asy_paris90 0:f37d59175b91 82
asy_paris90 0:f37d59175b91 83 bool Accelerometer :: detectedZeroG(){
asy_paris90 0:f37d59175b91 84 return zeroGDetect;
asy_paris90 0:f37d59175b91 85 }
asy_paris90 0:f37d59175b91 86
asy_paris90 0:f37d59175b91 87 void Accelerometer ::setZeroGDetectListener(void(*func)(void)){
asy_paris90 0:f37d59175b91 88 zeroG.rise(func);
asy_paris90 0:f37d59175b91 89 }
asy_paris90 0:f37d59175b91 90
asy_paris90 0:f37d59175b91 91 template<typename T> void Accelerometer ::setZeroGDetectListener(T*t,void (T::*func)(void)){
asy_paris90 0:f37d59175b91 92 zeroG.rise(t,func);
asy_paris90 0:f37d59175b91 93 }