Peiling Yi
/
Accelerometer_peilingmodify
Lab4-1
Fork of Accelerometer_example by
main.cpp@2:589ab4e1c22e, 2018-02-16 (annotated)
- Committer:
- Peilingyi
- Date:
- Fri Feb 16 23:35:38 2018 +0000
- Revision:
- 2:589ab4e1c22e
- Parent:
- 0:a1caba5c4e48
- Child:
- 3:79e48bb0fa93
lab4-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 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 5 | PinName const SDA = PTE25; |
WilliamMarshQMUL | 0:a1caba5c4e48 | 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); |
Peilingyi | 2:589ab4e1c22e | 13 | DigitalOut led1(LED1); |
Peilingyi | 2:589ab4e1c22e | 14 | DigitalOut led2(LED1); |
Peilingyi | 2:589ab4e1c22e | 15 | DigitalOut led3(LED1); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 16 | PwmOut gled(LED2); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 17 | PwmOut bled(LED3); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 18 | Serial pc(USBTX, USBRX); // tx, rx |
Peilingyi | 2:589ab4e1c22e | 19 | |
Peilingyi | 2:589ab4e1c22e | 20 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 21 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 22 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 23 | pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI()); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 24 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 25 | while (true) { |
WilliamMarshQMUL | 0:a1caba5c4e48 | 26 | float x, y, z; |
Peilingyi | 2:589ab4e1c22e | 27 | float errorrange = 0.05; |
Peilingyi | 2:589ab4e1c22e | 28 | float threshold = 0.2; |
Peilingyi | 2:589ab4e1c22e | 29 | int filter = 4; |
Peilingyi | 2:589ab4e1c22e | 30 | int countflag = 0; |
Peilingyi | 2:589ab4e1c22e | 31 | //int entry = 0; |
Peilingyi | 2:589ab4e1c22e | 32 | |
Peilingyi | 2:589ab4e1c22e | 33 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 34 | x = acc.getAccX(); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 35 | y = acc.getAccY(); |
WilliamMarshQMUL | 0:a1caba5c4e48 | 36 | z = acc.getAccZ(); |
Peilingyi | 2:589ab4e1c22e | 37 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 38 | Thread::wait(300); |
Peilingyi | 2:589ab4e1c22e | 39 | pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z); |
Peilingyi | 2:589ab4e1c22e | 40 | |
Peilingyi | 2:589ab4e1c22e | 41 | if ((abs((x+y+z)-1))<threshold) |
Peilingyi | 2:589ab4e1c22e | 42 | { |
Peilingyi | 2:589ab4e1c22e | 43 | if ((abs(z-1)<=errorrange)) |
Peilingyi | 2:589ab4e1c22e | 44 | { |
Peilingyi | 2:589ab4e1c22e | 45 | if (countflag == 0) |
Peilingyi | 2:589ab4e1c22e | 46 | { |
Peilingyi | 2:589ab4e1c22e | 47 | pc.printf("flat"); |
Peilingyi | 2:589ab4e1c22e | 48 | countflag = filter; |
Peilingyi | 2:589ab4e1c22e | 49 | led1= 1; |
Peilingyi | 2:589ab4e1c22e | 50 | led2=1; |
Peilingyi | 2:589ab4e1c22e | 51 | led3 =0; |
Peilingyi | 2:589ab4e1c22e | 52 | |
Peilingyi | 2:589ab4e1c22e | 53 | |
Peilingyi | 2:589ab4e1c22e | 54 | } |
Peilingyi | 2:589ab4e1c22e | 55 | else |
Peilingyi | 2:589ab4e1c22e | 56 | { |
Peilingyi | 2:589ab4e1c22e | 57 | countflag--; |
Peilingyi | 2:589ab4e1c22e | 58 | } |
Peilingyi | 2:589ab4e1c22e | 59 | } |
Peilingyi | 2:589ab4e1c22e | 60 | |
Peilingyi | 2:589ab4e1c22e | 61 | if (abs(x-1)<=errorrange) |
Peilingyi | 2:589ab4e1c22e | 62 | { |
Peilingyi | 2:589ab4e1c22e | 63 | if (countflag == 0) |
Peilingyi | 2:589ab4e1c22e | 64 | { |
Peilingyi | 2:589ab4e1c22e | 65 | pc.printf("left"); |
Peilingyi | 2:589ab4e1c22e | 66 | countflag = filter; |
Peilingyi | 2:589ab4e1c22e | 67 | led1= 1; |
Peilingyi | 2:589ab4e1c22e | 68 | led2=0; |
Peilingyi | 2:589ab4e1c22e | 69 | led3 =1; |
Peilingyi | 2:589ab4e1c22e | 70 | |
Peilingyi | 2:589ab4e1c22e | 71 | } |
Peilingyi | 2:589ab4e1c22e | 72 | else |
Peilingyi | 2:589ab4e1c22e | 73 | { |
Peilingyi | 2:589ab4e1c22e | 74 | countflag--; |
Peilingyi | 2:589ab4e1c22e | 75 | } |
Peilingyi | 2:589ab4e1c22e | 76 | } |
Peilingyi | 2:589ab4e1c22e | 77 | |
Peilingyi | 2:589ab4e1c22e | 78 | if (abs(x+1.0f)<=errorrange) |
Peilingyi | 2:589ab4e1c22e | 79 | { |
Peilingyi | 2:589ab4e1c22e | 80 | if (countflag == 0) |
Peilingyi | 2:589ab4e1c22e | 81 | { |
Peilingyi | 2:589ab4e1c22e | 82 | pc.printf("right"); |
Peilingyi | 2:589ab4e1c22e | 83 | countflag = filter; |
Peilingyi | 2:589ab4e1c22e | 84 | led1= 0; |
Peilingyi | 2:589ab4e1c22e | 85 | led2=1; |
Peilingyi | 2:589ab4e1c22e | 86 | led3 =1; |
Peilingyi | 2:589ab4e1c22e | 87 | |
Peilingyi | 2:589ab4e1c22e | 88 | } |
Peilingyi | 2:589ab4e1c22e | 89 | else |
Peilingyi | 2:589ab4e1c22e | 90 | { |
Peilingyi | 2:589ab4e1c22e | 91 | countflag--; |
Peilingyi | 2:589ab4e1c22e | 92 | } |
Peilingyi | 2:589ab4e1c22e | 93 | } |
Peilingyi | 2:589ab4e1c22e | 94 | |
Peilingyi | 2:589ab4e1c22e | 95 | |
Peilingyi | 2:589ab4e1c22e | 96 | } |
Peilingyi | 2:589ab4e1c22e | 97 | |
WilliamMarshQMUL | 0:a1caba5c4e48 | 98 | } |
WilliamMarshQMUL | 0:a1caba5c4e48 | 99 | } |