MMA7361L.cpp@3:6cddc2c096a4, 2012-02-17 (annotated)
- Committer:
- JST2011
- Date:
- Fri Feb 17 15:02:13 2012 +0000
- Revision:
- 3:6cddc2c096a4
- Parent:
- 0:be166c309588
- Child:
- 4:8bdd5a9f289e
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JST2011 | 0:be166c309588 | 1 | #include "MMA7361L.h" |
JST2011 | 0:be166c309588 | 2 | |
JST2011 | 0:be166c309588 | 3 | MMA7361L::MMA7361L(PinName xoutPin, PinName youtPin,PinName zoutPin, |
JST2011 | 0:be166c309588 | 4 | PinName zeroGDetectPin) : |
JST2011 | 0:be166c309588 | 5 | xout(xoutPin), yout(youtPin), zout(zoutPin), |
JST2011 | 0:be166c309588 | 6 | zeroGDetect(zeroGDetectPin) { |
JST2011 | 0:be166c309588 | 7 | scaleX = 0.246; |
JST2011 | 0:be166c309588 | 8 | scaleY = 0.251; |
JST2011 | 0:be166c309588 | 9 | scaleZ = 0.235; |
JST2011 | 0:be166c309588 | 10 | Xo = 0.486; |
JST2011 | 0:be166c309588 | 11 | Yo = 0.520; |
JST2011 | 0:be166c309588 | 12 | Zo = 0.500; |
JST2011 | 0:be166c309588 | 13 | } |
JST2011 | 0:be166c309588 | 14 | |
JST2011 | 0:be166c309588 | 15 | void MMA7361L::prepare(){ |
JST2011 | 0:be166c309588 | 16 | accelX = (xout - Xo) / scaleX; |
JST2011 | 0:be166c309588 | 17 | accelY = (yout - Yo) / scaleY; |
JST2011 | 0:be166c309588 | 18 | accelZ = (zout - Zo) / scaleZ; |
JST2011 | 0:be166c309588 | 19 | } |
JST2011 | 0:be166c309588 | 20 | |
JST2011 | 0:be166c309588 | 21 | float MMA7361L::getAccel() { |
JST2011 | 3:6cddc2c096a4 | 22 | prepare(); |
JST2011 | 0:be166c309588 | 23 | return sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ); |
JST2011 | 0:be166c309588 | 24 | } |
JST2011 | 0:be166c309588 | 25 | |
JST2011 | 0:be166c309588 | 26 | float MMA7361L::getAccelX() { |
JST2011 | 3:6cddc2c096a4 | 27 | prepare(); |
JST2011 | 0:be166c309588 | 28 | return accelX; |
JST2011 | 0:be166c309588 | 29 | } |
JST2011 | 0:be166c309588 | 30 | |
JST2011 | 0:be166c309588 | 31 | float MMA7361L::getAccelY() { |
JST2011 | 3:6cddc2c096a4 | 32 | prepare(); |
JST2011 | 0:be166c309588 | 33 | return accelY; |
JST2011 | 0:be166c309588 | 34 | } |
JST2011 | 0:be166c309588 | 35 | |
JST2011 | 0:be166c309588 | 36 | float MMA7361L::getAccelZ() { |
JST2011 | 3:6cddc2c096a4 | 37 | prepare(); |
JST2011 | 0:be166c309588 | 38 | return accelZ; |
JST2011 | 0:be166c309588 | 39 | } |
JST2011 | 0:be166c309588 | 40 | |
JST2011 | 0:be166c309588 | 41 | float MMA7361L::getTiltX() { |
JST2011 | 3:6cddc2c096a4 | 42 | prepare(); |
JST2011 | 0:be166c309588 | 43 | return asin(accelX / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); |
JST2011 | 0:be166c309588 | 44 | } |
JST2011 | 0:be166c309588 | 45 | |
JST2011 | 0:be166c309588 | 46 | float MMA7361L::getTiltY() { |
JST2011 | 3:6cddc2c096a4 | 47 | prepare(); |
JST2011 | 0:be166c309588 | 48 | return asin(accelY / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); |
JST2011 | 0:be166c309588 | 49 | } |
JST2011 | 0:be166c309588 | 50 | |
JST2011 | 0:be166c309588 | 51 | float MMA7361L::getTiltZ() { |
JST2011 | 3:6cddc2c096a4 | 52 | prepare(); |
JST2011 | 0:be166c309588 | 53 | return asin(accelZ / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); |
JST2011 | 0:be166c309588 | 54 | } |
JST2011 | 0:be166c309588 | 55 | |
JST2011 | 0:be166c309588 | 56 | bool MMA7361L::zeroGDetected() { |
JST2011 | 0:be166c309588 | 57 | return zeroGDetect; |
JST2011 | 0:be166c309588 | 58 | } |
JST2011 | 0:be166c309588 | 59 | |
JST2011 | 0:be166c309588 | 60 | void MMA7361L::setZeroGDetectListener(void (*func)(void)) { |
JST2011 | 0:be166c309588 | 61 | zeroGDetect.rise(func); |
JST2011 | 0:be166c309588 | 62 | } |
JST2011 | 0:be166c309588 | 63 | |
JST2011 | 0:be166c309588 | 64 | template<typename T> void MMA7361L::setZeroGDetectListener(T* t, void (T::*func)(void)) { |
JST2011 | 0:be166c309588 | 65 | zeroG.rise(t, func); |
JST2011 | 0:be166c309588 | 66 | } |