Accelerometer_lab_4_edwin_kadavy

Dependencies:   MMA8451Q

Fork of Accelerometer_example by William Marsh

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?

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