MMA7260Q Accelerometer

Committer:
yamaguch
Date:
Mon Mar 07 04:34:45 2011 +0000
Revision:
3:e31cb4dd4aa6
Parent:
0:7d4712fa571d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguch 0:7d4712fa571d 1 #include "Accelerometer.h"
yamaguch 0:7d4712fa571d 2
yamaguch 0:7d4712fa571d 3 Accelerometer::Accelerometer(PinName xPin, PinName yPin,PinName zPin, PinName slpPin, PinName gs1Pin, PinName gs2Pin) :
yamaguch 0:7d4712fa571d 4 xout(xPin), yout(yPin), zout(zPin), gs1(gs1Pin), gs2(gs2Pin), sleep(slpPin) {
yamaguch 0:7d4712fa571d 5 sleep = 1; // normal mode
yamaguch 0:7d4712fa571d 6 gs1 = 0; // 1.5G mode
yamaguch 0:7d4712fa571d 7 gs2 = 0; // 1.5G mode
yamaguch 0:7d4712fa571d 8 scale = 0.8;
yamaguch 0:7d4712fa571d 9 }
yamaguch 0:7d4712fa571d 10
yamaguch 0:7d4712fa571d 11 float Accelerometer::getAccel() {
yamaguch 0:7d4712fa571d 12 float x = getAccelX();
yamaguch 0:7d4712fa571d 13 float y = getAccelY();
yamaguch 0:7d4712fa571d 14 float z = getAccelZ();
yamaguch 0:7d4712fa571d 15 return sqrt(x * x + y * y + z * z);
yamaguch 0:7d4712fa571d 16 }
yamaguch 0:7d4712fa571d 17
yamaguch 0:7d4712fa571d 18 float Accelerometer::getAccelX() {
yamaguch 0:7d4712fa571d 19 return ((xout * 3.3) - 1.65) / scale;
yamaguch 0:7d4712fa571d 20 }
yamaguch 0:7d4712fa571d 21
yamaguch 0:7d4712fa571d 22 float Accelerometer::getAccelY() {
yamaguch 0:7d4712fa571d 23 return ((yout * 3.3) - 1.65) / scale;
yamaguch 0:7d4712fa571d 24 }
yamaguch 0:7d4712fa571d 25
yamaguch 0:7d4712fa571d 26 float Accelerometer::getAccelZ() {
yamaguch 0:7d4712fa571d 27 return ((zout * 3.3) - 1.65) / scale;
yamaguch 0:7d4712fa571d 28 }
yamaguch 0:7d4712fa571d 29
yamaguch 0:7d4712fa571d 30 float Accelerometer::getTiltX() {
yamaguch 0:7d4712fa571d 31 float x = getAccelX();
yamaguch 0:7d4712fa571d 32 float y = getAccelY();
yamaguch 0:7d4712fa571d 33 float z = getAccelZ();
yamaguch 0:7d4712fa571d 34 float a = sqrt(x * x + y * y + z * z);
yamaguch 0:7d4712fa571d 35 return asin(x / a);
yamaguch 0:7d4712fa571d 36 }
yamaguch 0:7d4712fa571d 37
yamaguch 0:7d4712fa571d 38 float Accelerometer::getTiltY() {
yamaguch 0:7d4712fa571d 39 float x = getAccelX();
yamaguch 0:7d4712fa571d 40 float y = getAccelY();
yamaguch 0:7d4712fa571d 41 float z = getAccelZ();
yamaguch 0:7d4712fa571d 42 float a = sqrt(x * x + y * y + z * z);
yamaguch 0:7d4712fa571d 43 return asin(y / a);
yamaguch 0:7d4712fa571d 44 }
yamaguch 0:7d4712fa571d 45
yamaguch 0:7d4712fa571d 46 float Accelerometer::getTiltZ() {
yamaguch 0:7d4712fa571d 47 float x = getAccelX();
yamaguch 0:7d4712fa571d 48 float y = getAccelY();
yamaguch 0:7d4712fa571d 49 float z = getAccelZ();
yamaguch 0:7d4712fa571d 50 float a = sqrt(x * x + y * y + z * z);
yamaguch 0:7d4712fa571d 51 return asin(z / a);
yamaguch 0:7d4712fa571d 52 }
yamaguch 0:7d4712fa571d 53
yamaguch 0:7d4712fa571d 54 void Accelerometer::setScale(Scale scale) {
yamaguch 0:7d4712fa571d 55 switch (scale) {
yamaguch 0:7d4712fa571d 56 case SCALE_1_5G:
yamaguch 0:7d4712fa571d 57 this->scale = 0.8;
yamaguch 0:7d4712fa571d 58 gs1 = gs2 = 0;
yamaguch 0:7d4712fa571d 59 break;
yamaguch 0:7d4712fa571d 60 case SCALE_2G:
yamaguch 0:7d4712fa571d 61 this->scale = 0.6;
yamaguch 0:7d4712fa571d 62 gs1 = 1; gs2 = 0;
yamaguch 0:7d4712fa571d 63 break;
yamaguch 0:7d4712fa571d 64 case SCALE_4G:
yamaguch 0:7d4712fa571d 65 this->scale = 0.3;
yamaguch 0:7d4712fa571d 66 gs1 = 0; gs2 = 1;
yamaguch 0:7d4712fa571d 67 break;
yamaguch 0:7d4712fa571d 68 case SCALE_6G:
yamaguch 0:7d4712fa571d 69 this->scale = 0.2;
yamaguch 0:7d4712fa571d 70 gs1 = gs2 = 1;
yamaguch 0:7d4712fa571d 71 break;
yamaguch 0:7d4712fa571d 72 }
yamaguch 0:7d4712fa571d 73 }
yamaguch 0:7d4712fa571d 74
yamaguch 0:7d4712fa571d 75 void Accelerometer::setSleep(bool on) {
yamaguch 0:7d4712fa571d 76 sleep = !on;
yamaguch 0:7d4712fa571d 77 }