MMA7260Q Accelerometer
Accelerometer.cpp@3:e31cb4dd4aa6, 2011-03-07 (annotated)
- Committer:
- yamaguch
- Date:
- Mon Mar 07 04:34:45 2011 +0000
- Revision:
- 3:e31cb4dd4aa6
- Parent:
- 0:7d4712fa571d
Who changed what in which revision?
User | Revision | Line number | New 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 | } |