Final

Committer:
ex19397
Date:
Thu Mar 05 23:02:34 2020 +0000
Revision:
6:a0f642150296
Parent:
4:72b8fb7423dd
Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WilliamMarshQMUL 0:a1caba5c4e48 1 #include "mbed.h"
WilliamMarshQMUL 0:a1caba5c4e48 2 #include "MMA8451Q.h"
WilliamMarshQMUL 0:a1caba5c4e48 3
WilliamMarshQMUL 0:a1caba5c4e48 4 PinName const SDA = PTE25;
WilliamMarshQMUL 0:a1caba5c4e48 5 PinName const SCL = PTE24;
WilliamMarshQMUL 0:a1caba5c4e48 6
WilliamMarshQMUL 0:a1caba5c4e48 7 #define MMA8451_I2C_ADDRESS (0x1d<<1)
WilliamMarshQMUL 0:a1caba5c4e48 8
WilliamMarshQMUL 0:a1caba5c4e48 9 int main(void)
WilliamMarshQMUL 0:a1caba5c4e48 10 {
WilliamMarshQMUL 0:a1caba5c4e48 11 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
WilliamMarshQMUL 0:a1caba5c4e48 12 PwmOut rled(LED1);
WilliamMarshQMUL 0:a1caba5c4e48 13 PwmOut gled(LED2);
WilliamMarshQMUL 0:a1caba5c4e48 14 PwmOut bled(LED3);
WilliamMarshQMUL 0:a1caba5c4e48 15 Serial pc(USBTX, USBRX); // tx, rx
ex19397 6:a0f642150296 16 enum position { flat, over, intermediate, down, up, left, right } pos;
ex19397 6:a0f642150296 17 pos = intermediate;
ex19397 6:a0f642150296 18 //orientationstate cases = flat;
ex19397 6:a0f642150296 19
WilliamMarshQMUL 0:a1caba5c4e48 20 pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI());
WilliamMarshQMUL 0:a1caba5c4e48 21
WilliamMarshQMUL 0:a1caba5c4e48 22 while (true) {
WilliamMarshQMUL 0:a1caba5c4e48 23 float x, y, z;
WilliamMarshQMUL 0:a1caba5c4e48 24 x = acc.getAccX();
WilliamMarshQMUL 0:a1caba5c4e48 25 y = acc.getAccY();
WilliamMarshQMUL 0:a1caba5c4e48 26 z = acc.getAccZ();
ex19397 6:a0f642150296 27
ex19397 6:a0f642150296 28 switch (pos) {
ex19397 6:a0f642150296 29
ex19397 6:a0f642150296 30 case flat:
ex19397 6:a0f642150296 31 if (z < 0.8) {
ex19397 6:a0f642150296 32 rled = 1;
ex19397 6:a0f642150296 33 gled = 1;
ex19397 6:a0f642150296 34 bled = 1;
ex19397 6:a0f642150296 35 pos = intermediate;
ex19397 6:a0f642150296 36 }
ex19397 6:a0f642150296 37
ex19397 6:a0f642150296 38 break;
ex19397 6:a0f642150296 39
ex19397 6:a0f642150296 40 case over:
ex19397 6:a0f642150296 41 if (z > -0.8) {
ex19397 6:a0f642150296 42 rled = 1;
ex19397 6:a0f642150296 43 gled = 1;
ex19397 6:a0f642150296 44 bled = 1;
ex19397 6:a0f642150296 45 pos = intermediate;
ex19397 6:a0f642150296 46 }
ex19397 6:a0f642150296 47 break;
ex19397 6:a0f642150296 48
ex19397 6:a0f642150296 49 case intermediate:
ex19397 6:a0f642150296 50 if (z < -0.9 ) {
ex19397 6:a0f642150296 51 rled = 1;
ex19397 6:a0f642150296 52 gled = 0;
ex19397 6:a0f642150296 53 bled = 1;
ex19397 6:a0f642150296 54 pos = over;
ex19397 6:a0f642150296 55 pc.printf("Board Orientation : Over\n\r");
ex19397 6:a0f642150296 56 }
ex19397 6:a0f642150296 57
ex19397 6:a0f642150296 58 if ((z > 0.9 ) ){
ex19397 6:a0f642150296 59 rled = 1;
ex19397 6:a0f642150296 60 gled = 0;
ex19397 6:a0f642150296 61 bled = 1;
ex19397 6:a0f642150296 62 pc.printf("Board Orientation : Flat\n\r");
ex19397 6:a0f642150296 63 pos = flat;
ex19397 6:a0f642150296 64 }
ex19397 6:a0f642150296 65 /*if ((z < 0.8) && (z > -0.8)&& (x < 0.8) && (x > -0.8) && (z < 0.8) && (z > -0.8)) {
ex19397 6:a0f642150296 66 rled = 1;
ex19397 6:a0f642150296 67 gled = 1;
ex19397 6:a0f642150296 68 bled = 1;
ex19397 6:a0f642150296 69 pos = intermediate;
ex19397 6:a0f642150296 70 }*/
ex19397 6:a0f642150296 71 if ((x >0.9) ) {
ex19397 6:a0f642150296 72 rled = 1;
ex19397 6:a0f642150296 73 gled = 1;
ex19397 6:a0f642150296 74 bled = 0;
ex19397 6:a0f642150296 75 pos = down;
ex19397 6:a0f642150296 76 pc.printf("Board Orientation : Down\n\r");
ex19397 6:a0f642150296 77 }
ex19397 6:a0f642150296 78 if (x < -0.9) {
ex19397 6:a0f642150296 79 rled = 1;
ex19397 6:a0f642150296 80 gled = 1;
ex19397 6:a0f642150296 81 bled = 0;
ex19397 6:a0f642150296 82 pos = up;
ex19397 6:a0f642150296 83 pc.printf("Board Orientation : Up\n\r");
ex19397 6:a0f642150296 84
ex19397 6:a0f642150296 85 }
ex19397 6:a0f642150296 86 if ((y > 0.9 ) ) {
ex19397 6:a0f642150296 87 rled = 0;
ex19397 6:a0f642150296 88 gled = 1;
ex19397 6:a0f642150296 89 bled = 1;
ex19397 6:a0f642150296 90 pos = left;
ex19397 6:a0f642150296 91 pc.printf("Board Orientation : Left\n\r");
ex19397 6:a0f642150296 92
ex19397 6:a0f642150296 93 }
ex19397 6:a0f642150296 94 if (y < -0.9) {
ex19397 6:a0f642150296 95 rled = 0;
ex19397 6:a0f642150296 96 gled = 1;
ex19397 6:a0f642150296 97 bled = 1;
ex19397 6:a0f642150296 98 pos = right;
ex19397 6:a0f642150296 99 pc.printf("Board Orientation : Right\n\r");
ex19397 6:a0f642150296 100
ex19397 6:a0f642150296 101 }
ex19397 6:a0f642150296 102
ex19397 6:a0f642150296 103 break;
ex19397 6:a0f642150296 104
ex19397 6:a0f642150296 105 case down:
ex19397 6:a0f642150296 106 if (x < 0.8) {
ex19397 6:a0f642150296 107 rled = 1;
ex19397 6:a0f642150296 108 gled = 1;
ex19397 6:a0f642150296 109 bled = 1;
ex19397 6:a0f642150296 110 pos = intermediate;
ex19397 6:a0f642150296 111 }
ex19397 6:a0f642150296 112 break;
ex19397 6:a0f642150296 113
ex19397 6:a0f642150296 114 case up:
ex19397 6:a0f642150296 115 if (x > - 0.8) {
ex19397 6:a0f642150296 116 rled = 1;
ex19397 6:a0f642150296 117 gled = 1;
ex19397 6:a0f642150296 118 bled = 1;
ex19397 6:a0f642150296 119 pos = intermediate;
ex19397 6:a0f642150296 120 }
ex19397 6:a0f642150296 121
ex19397 6:a0f642150296 122 break;
ex19397 6:a0f642150296 123
ex19397 6:a0f642150296 124 case left:
ex19397 6:a0f642150296 125
ex19397 6:a0f642150296 126 if (y < 0.8 ){
ex19397 6:a0f642150296 127 rled = 1;
ex19397 6:a0f642150296 128 gled = 1;
ex19397 6:a0f642150296 129 bled = 1;
ex19397 6:a0f642150296 130 pos = intermediate;
ex19397 6:a0f642150296 131 }
ex19397 6:a0f642150296 132
ex19397 6:a0f642150296 133 break;
ex19397 6:a0f642150296 134
ex19397 6:a0f642150296 135 case right:
ex19397 6:a0f642150296 136
ex19397 6:a0f642150296 137 if (y > - 0.8) {
ex19397 6:a0f642150296 138 rled = 1;
ex19397 6:a0f642150296 139 gled = 1;
ex19397 6:a0f642150296 140 bled = 1;
ex19397 6:a0f642150296 141 pos = intermediate;
ex19397 6:a0f642150296 142 }
ex19397 6:a0f642150296 143
ex19397 6:a0f642150296 144 break;
ex19397 6:a0f642150296 145 //rled = 1.0f - abs(x);
ex19397 6:a0f642150296 146 //gled = 1.0f - abs(y);
ex19397 6:a0f642150296 147 //bled = 1.0f - abs(z);
ex19397 6:a0f642150296 148 ThisThread::sleep_for(3000); // wait(0.3);
ex19397 6:a0f642150296 149
ex19397 6:a0f642150296 150 }
WilliamMarshQMUL 0:a1caba5c4e48 151 }
ex19397 6:a0f642150296 152 }