Akhil Nair
/
Lab4p1
Revision 4:fccebe805302, committed 2019-02-21
- Comitter:
- anair12345
- Date:
- Thu Feb 21 17:48:42 2019 +0000
- Parent:
- 3:d5c746840139
- Commit message:
- Lab4pt1 final version
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Jan 30 21:54:03 2019 +0000 +++ b/main.cpp Thu Feb 21 17:48:42 2019 +0000 @@ -6,6 +6,8 @@ #define MMA8451_I2C_ADDRESS (0x1d<<1) +enum orientation {Intermediate,FlatUp,FlatDown,Left,Right,Forwards,Backwards}; + int main(void) { MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); @@ -13,8 +15,9 @@ PwmOut gled(LED2); PwmOut bled(LED3); Serial pc(USBTX, USBRX); // tx, rx - - + + orientation orient = Intermediate; + pc.printf("MMA8451 ID: %d\n", acc.getWhoAmI()); while (true) { @@ -22,10 +25,98 @@ x = acc.getAccX(); y = acc.getAccY(); z = acc.getAccZ(); - rled = 1.0f - abs(x); - gled = 1.0f - abs(y); - bled = 1.0f - abs(z); - wait(0.3); - pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x, y, z); + //pc.printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x, y, z); + + switch (orient){ + case Intermediate: + if(0.9<z && z<1.1){ + pc.printf("The TouchPad is flat\r\n"); + orient = FlatUp; + } + else if(-0.9>z && z>-1.1){ + pc.printf("The TouchPad is facing the floor\r\n"); + orient = FlatDown; + } + else if(0.9<y && y<1.1){ + pc.printf("The TouchPad is tipped to the right\r\n"); + orient = Right; + } + else if(-0.9>y && y>-1.1){ + pc.printf("The TouchPad is tipped to the left\r\n"); + orient = Left; + } + else if(0.9<x && x<1.1){ + pc.printf("The TouchPad is tipped forwards\r\n"); + orient = Forwards; + } + else if(-0.9>x && x>-1.1){ + pc.printf("The TouchPad is tipped backwards\r\n"); + orient = Backwards; + } + break ; + case FlatUp: + if(0.9<z && z<1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + case FlatDown: + if(-0.9>z && z>-1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + case Forwards: + if(0.9<x && x<1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + case Backwards: + if(-0.9<x && x<-1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + case Right: + if(0.9<y && y<1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + case Left: + if(-0.9<y && y<-1.1){ + rled = 1.0f - abs(z); + gled = 1.0f - abs(y); + bled = 1.0f - abs(x); + } + else{ + orient = Intermediate; + } + break; + } + + + wait(0.1); } }