please publish my library
Fork of accelerometer by
Diff: Accelerometer.cpp
- Revision:
- 0:f37d59175b91
- Child:
- 1:e965533a31b2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Accelerometer.cpp Mon Jul 09 02:17:49 2012 +0000 @@ -0,0 +1,93 @@ +#include "Accelerometer.h" +Accelerometer::Accelerometer(PinName xoutPin,PinName youtPin,PinName zoutPin,PinName sleepPin,PinName zeroGDetectPin,PinName gSelectPin): + + xout(xoutPin),yout(youtPin),zout(zoutPin),zeroGDetect(zeroGDetectPin),sleep(sleepPin),gSelect(gSelectPin),zeroG(zeroGDetectPin) + { + sleep = 1; //normal mode + gSelect = 0; //1.5G mode + scale = 0.8; + } + + float Accelerometer ::getAccel(){ + float x = getAccelX(); + float y = getAccelY(); + float z = getAccelZ(); + return sqrt (x*x + y*y + z*z); + + } + + float Accelerometer :: getAccelX(){ + return ((xout*3.3)-1.65)/scale; + } + + float Accelerometer :: getAccelY(){ + return ((yout*3.3)-1.65)/scale; + } + + float Accelerometer :: getAccelZ(){ + return ((zout*3.3)-1.65)/scale; + } + + float Accelerometer :: getTiltX() { + + float x =getAccelX(); + float y =getAccelY(); + float z =getAccelZ(); + float a =sqrt(x*x + y*y + z*z); + return asin (x/a); + + } + + float Accelerometer :: getTiltY(){ + + float x =getAccelX(); + float y =getAccelY(); + float z =getAccelZ(); + float a =sqrt(x*x + y*y + z*z); + return asin (y/a); + + } + + float Accelerometer :: getTiltZ(){ + + float x =getAccelX(); + float y =getAccelY(); + float z =getAccelZ(); + float a =sqrt(x*x + y*y + z*z); + return asin (z/a); + + } + + void Accelerometer :: setScale(Scale scale){ + switch (scale){ + + case SCALE_1_5G: + this->scale =0.8; + gSelect = 0; + break; + case SCALE_6G: + this->scale = 0.206; + gSelect = 1; + break; + + } + + } + + + void Accelerometer ::setSleep(bool on){ + sleep= !on; + } + + + bool Accelerometer :: detectedZeroG(){ + return zeroGDetect; +} + + void Accelerometer ::setZeroGDetectListener(void(*func)(void)){ + zeroG.rise(func); +} + + template<typename T> void Accelerometer ::setZeroGDetectListener(T*t,void (T::*func)(void)){ + zeroG.rise(t,func); +} \ No newline at end of file