please publish my library
Fork of accelerometer by
Accelerometer.cpp@0:f37d59175b91, 2012-07-09 (annotated)
- Committer:
- asy_paris90
- Date:
- Mon Jul 09 02:17:49 2012 +0000
- Revision:
- 0:f37d59175b91
- Child:
- 1:e965533a31b2
Accelerometer7361
Who changed what in which revision?
User | Revision | Line number | New 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 | } |