Dependencies:   MMA8451Q

Fork of Accelerometer_example by William Marsh

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?

UserRevisionLine numberNew 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 }