Committer:
kvling
Date:
Thu Dec 08 05:39:11 2011 +0000
Revision:
0:9f484862187b

        

Who changed what in which revision?

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