Edwin Kadavy
/
Accelerometer_lab_4_edwin_kadavy
Accelerometer_lab_4_edwin_kadavy
Fork of Accelerometer_example by
main.cpp@2:b884d78f375d, 2018-02-16 (annotated)
- Committer:
- edwinkad
- Date:
- Fri Feb 16 22:29:38 2018 +0000
- Revision:
- 2:b884d78f375d
- Parent:
- 0:a1caba5c4e48
version_1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WilliamMarshQMUL | 0:a1caba5c4e48 | 1 | #include "mbed.h" |
WilliamMarshQMUL | 0:a1caba5c4e48 | 2 | #include "rtos.h" |
WilliamMarshQMUL | 0:a1caba5c4e48 | 3 | #include "MMA8451Q.h" |
WilliamMarshQMUL | 0:a1caba5c4e48 | 4 | |
edwinkad | 2:b884d78f375d | 5 | PinName const SDA = PTE25; |
edwinkad | 2:b884d78f375d | 6 | PinName const SCL = PTE24; |
WilliamMarshQMUL | 0:a1caba5c4e48 | 7 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 8 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
WilliamMarshQMUL | 0:a1caba5c4e48 | 9 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 10 | int main(void) |
WilliamMarshQMUL | 0:a1caba5c4e48 | 11 | { |
WilliamMarshQMUL | 0:a1caba5c4e48 | 12 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 13 | PwmOut rled(LED1); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 14 | PwmOut gled(LED2); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 15 | PwmOut bled(LED3); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 16 | Serial pc(USBTX, USBRX); // tx, rx |
edwinkad | 2:b884d78f375d | 17 | accState2=0; |
WilliamMarshQMUL | 0:a1caba5c4e48 | 18 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 19 | pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI()); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 20 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 21 | while (true) { |
WilliamMarshQMUL | 0:a1caba5c4e48 | 22 | float x, y, z; |
edwinkad | 2:b884d78f375d | 23 | int accState; |
edwinkad | 2:b884d78f375d | 24 | float accmin=0.95; |
edwinkad | 2:b884d78f375d | 25 | float accmax=1.05; |
WilliamMarshQMUL | 0:a1caba5c4e48 | 26 | x = acc.getAccX(); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 27 | y = acc.getAccY(); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 28 | z = acc.getAccZ(); |
edwinkad | 2:b884d78f375d | 29 | //rled = 1.0f - abs(x); |
edwinkad | 2:b884d78f375d | 30 | //gled = 1.0f - abs(y); |
edwinkad | 2:b884d78f375d | 31 | //bled = 1.0f - abs(z); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 32 | Thread::wait(300); |
edwinkad | 2:b884d78f375d | 33 | |
edwinkad | 2:b884d78f375d | 34 | |
edwinkad | 2:b884d78f375d | 35 | if(z>=accmin && z<=accmax) { |
edwinkad | 2:b884d78f375d | 36 | accState=1; |
edwinkad | 2:b884d78f375d | 37 | } else if(y<=-(accmin) && y>=-(accmax)) { |
edwinkad | 2:b884d78f375d | 38 | accState=2; |
edwinkad | 2:b884d78f375d | 39 | } else if(y>=accmin && y<=accmax) { |
edwinkad | 2:b884d78f375d | 40 | accState=3; |
edwinkad | 2:b884d78f375d | 41 | } else if(x<=-(accmin) && x>=-(accmax)) { |
edwinkad | 2:b884d78f375d | 42 | accState=4; |
edwinkad | 2:b884d78f375d | 43 | } else if(x>=accmin && x<=accmax) { |
edwinkad | 2:b884d78f375d | 44 | accState=5; |
edwinkad | 2:b884d78f375d | 45 | } else if(z<=-(accmin) && z>=-(accmax)) { |
edwinkad | 2:b884d78f375d | 46 | accState=6; |
edwinkad | 2:b884d78f375d | 47 | } else { |
edwinkad | 2:b884d78f375d | 48 | accState=0; |
edwinkad | 2:b884d78f375d | 49 | } |
edwinkad | 2:b884d78f375d | 50 | if accState2==accState |
edwinkad | 2:b884d78f375d | 51 | switch (accState) { |
edwinkad | 2:b884d78f375d | 52 | case 0: //Intermidiate |
edwinkad | 2:b884d78f375d | 53 | // |
edwinkad | 2:b884d78f375d | 54 | rled=1; |
edwinkad | 2:b884d78f375d | 55 | gled=1; |
edwinkad | 2:b884d78f375d | 56 | bled=1; |
edwinkad | 2:b884d78f375d | 57 | break; |
edwinkad | 2:b884d78f375d | 58 | case 1: //Flat |
edwinkad | 2:b884d78f375d | 59 | pc.printf("flat\n\r"); |
edwinkad | 2:b884d78f375d | 60 | rled=0; |
edwinkad | 2:b884d78f375d | 61 | gled=1; |
edwinkad | 2:b884d78f375d | 62 | bled=1; |
edwinkad | 2:b884d78f375d | 63 | break; |
edwinkad | 2:b884d78f375d | 64 | case 2: //right |
edwinkad | 2:b884d78f375d | 65 | pc.printf("right\n\r"); |
edwinkad | 2:b884d78f375d | 66 | rled=1; |
edwinkad | 2:b884d78f375d | 67 | gled=0; |
edwinkad | 2:b884d78f375d | 68 | bled=1; |
edwinkad | 2:b884d78f375d | 69 | break; |
edwinkad | 2:b884d78f375d | 70 | case 3: //left |
edwinkad | 2:b884d78f375d | 71 | pc.printf("left\n\r"); |
edwinkad | 2:b884d78f375d | 72 | rled=1; |
edwinkad | 2:b884d78f375d | 73 | gled=1; |
edwinkad | 2:b884d78f375d | 74 | bled=0; |
edwinkad | 2:b884d78f375d | 75 | break; |
edwinkad | 2:b884d78f375d | 76 | case 4: //up |
edwinkad | 2:b884d78f375d | 77 | pc.printf("up\n\r"); |
edwinkad | 2:b884d78f375d | 78 | rled=0; |
edwinkad | 2:b884d78f375d | 79 | gled=0; |
edwinkad | 2:b884d78f375d | 80 | bled=1; |
edwinkad | 2:b884d78f375d | 81 | break; |
edwinkad | 2:b884d78f375d | 82 | case 5: //down |
edwinkad | 2:b884d78f375d | 83 | pc.printf("down\n\r"); |
edwinkad | 2:b884d78f375d | 84 | rled=0; |
edwinkad | 2:b884d78f375d | 85 | gled=1; |
edwinkad | 2:b884d78f375d | 86 | bled=0; |
edwinkad | 2:b884d78f375d | 87 | break; |
edwinkad | 2:b884d78f375d | 88 | case 6: //over |
edwinkad | 2:b884d78f375d | 89 | pc.printf("over\n\r"); |
edwinkad | 2:b884d78f375d | 90 | rled=1; |
edwinkad | 2:b884d78f375d | 91 | gled=0; |
edwinkad | 2:b884d78f375d | 92 | bled=0; |
edwinkad | 2:b884d78f375d | 93 | break; |
edwinkad | 2:b884d78f375d | 94 | } |
WilliamMarshQMUL | 0:a1caba5c4e48 | 95 | } |
WilliamMarshQMUL | 0:a1caba5c4e48 | 96 | } |