Dependents:   accelerometer

Committer:
JST2011
Date:
Fri Feb 17 15:27:31 2012 +0000
Revision:
4:8bdd5a9f289e
Parent:
3:6cddc2c096a4

        

Who changed what in which revision?

UserRevisionLine numberNew 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 4:8bdd5a9f289e 9 scaleZ = 0.219;
JST2011 0:be166c309588 10 Xo = 0.486;
JST2011 0:be166c309588 11 Yo = 0.520;
JST2011 4:8bdd5a9f289e 12 Zo = 0.465;
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 }