Václav Lízner
/
2048
school project
Diff: main.cpp
- Revision:
- 2:3278e4fd8fc2
- Parent:
- 1:b23831b703fe
- Child:
- 3:94bfc4de4ab1
--- a/main.cpp Mon Jan 11 22:34:33 2016 +0000 +++ b/main.cpp Tue Jan 12 17:02:19 2016 +0000 @@ -2,6 +2,16 @@ #include "MMA8451Q.h" #define MMA8451_I2C_ADDRESS (0x1d<<1) +#define MOVE_ANGLE 45 // > degrees for move + +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + +void accelerometer(void); + + int i,j,k; + int RED, GREEN, BLUE; + int RledA, RledB, GledA, GledB, BledA, BledB; + char acc_dir; DigitalOut prvni(PTE5); DigitalOut druhy(PTE4); @@ -40,16 +50,16 @@ DigitalOut Bled8(PTB1); - int i,j,k; - int RED, GREEN, BLUE; - int RledA, RledB, GledA, GledB, BledA, BledB; + int main() { -MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + while(1) { + +accelerometer(); for(k=1;k<5;k++) { @@ -105,34 +115,44 @@ for(j=1;j<5;j++) { - if(j==1) - { - RED=abs(acc.getAccX())*5; - BLUE=abs(acc.getAccY())*5; - GREEN=abs(acc.getAccZ())*5; - } + // if(j==1) + // { + switch(acc_dir) + { + case 'D': + RED=10; + break; + case 'R': + BLUE=10; + break; + case 'U': + GREEN=10; + break; + case 'L': + RED=10; + BLUE=10; + break; + default: + break; + } + + /* } if(j==2) { - RED=abs(acc.getAccX())*5; - BLUE=abs(acc.getAccY())*5; - GREEN=abs(acc.getAccZ())*2; + } if(j==3) { - RED=abs(acc.getAccX())*5; - BLUE=abs(acc.getAccY())*5; - GREEN=abs(acc.getAccZ())*2 + } if(j==4) { - RED=abs(acc.getAccX())*5; - BLUE=abs(acc.getAccY())*5; - GREEN=abs(acc.getAccZ())*2; + } - + */ for(i=11;i>0;i--) { @@ -209,7 +229,7 @@ Bled8=BledB; } - wait(0.00005); + wait(0.00001); RED--; BLUE--; GREEN--; @@ -219,6 +239,48 @@ } } } + +void accelerometer() +{ + + float ax, ay, az; + float xAngle, yAngle; + + ax = acc.getAccX(); + ay = acc.getAccY(); + az = acc.getAccZ(); + + xAngle = atan( ax / (sqrt((ay)*(ay) + (az)*(az)))) * 60; + yAngle = atan( ay / (sqrt((ax)*(ax) + (az)*(az)))) * 60; + + + if(abs(xAngle) >= abs(yAngle)) + { + if(xAngle >= MOVE_ANGLE) + { + acc_dir = 'U'; // +X + } + + if(xAngle <= -MOVE_ANGLE) + { + acc_dir = 'D'; // -X + } + } + + else + { + if(yAngle >= MOVE_ANGLE) + { + acc_dir = 'L'; // +Y + } + + if(yAngle <= -MOVE_ANGLE) + { + acc_dir = 'R'; // -Y + } + } + +} \ No newline at end of file