Václav Lízner
/
2048
school project
Diff: main.cpp
- Revision:
- 9:8a738bd758de
- Parent:
- 8:5f485026374d
--- a/main.cpp Fri Jan 15 00:52:31 2016 +0000 +++ b/main.cpp Fri Jan 15 12:07:52 2016 +0000 @@ -1,25 +1,26 @@ -#include "mbed.h" -#include "MMA8451Q.h" + + #include "mbed.h" + #include "MMA8451Q.h" -#define MMA8451_I2C_ADDRESS (0x1d<<1) -#define MOVE_ANGLE 35 // minimalni uhel pro pohyb -#define NULL_ANGLE 15 // minimalni uhel pro nulovou pozici - + #define MMA8451_I2C_ADDRESS (0x1d<<1) + #define MOVE_ANGLE 30 // minimalni uhel pro pohyb + #define NULL_ANGLE 15 // minimalni uhel pro nulovou pozici + #define BRIGHTNESS 10 // svítivost -MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); -void accelerometer(void); -void zobrazeni(void); -void barva(int,int); -void pohyb(void); -void proved(int); -void pridej(void); + void akcelerometr(void); + void zobrazeni(void); + void barva(int,int); + void pohyb(void); + void sesypej(int); + void pridej(void); int RED, GREEN, BLUE; float xAngle, yAngle; //aktualni uhel v ose x a y int p=1; - char acc_dir; //směr pohybu + char naklon; //směr pohybu int pole[4][4]={{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}}; //aktuální matice int pole2[4][4]={{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}}; //kontrolní matice @@ -66,13 +67,13 @@ int main() { - accelerometer(); + akcelerometr(); pridej(); pridej(); //přidání prvních dvou kostek - while(1) + while(1) // nekonečná smyčka pro detekci pohybu a zobrazování aktuální matice { - accelerometer(); + akcelerometr(); pohyb(); zobrazeni(); } @@ -82,12 +83,12 @@ void pohyb() { - switch(acc_dir) + switch(naklon) { case 'D': //pohyb smerem dolu if(p==0) { - proved(1); + sesypej(1); p=1; } break; @@ -95,7 +96,7 @@ case 'R': // pohyb smerem vpravo if(p==0) { - proved(2); + sesypej(2); p=1; } break; @@ -103,7 +104,7 @@ case 'U': // pohyb smerem nahoru if(p==0) { - proved(3); + sesypej(3); p=1; } break; @@ -111,7 +112,7 @@ case 'L': // pohyb smerem vlevo if(p==0) { - proved(4); + sesypej(4); p=1; } break; @@ -127,7 +128,7 @@ /////////////////////////////////////////////////////////////////////////////// -void proved(int x) +void sesypej(int x) { int a,b,c,d; //pomocné proměnné pro uložení řádků/sloupců při sesypání int same=0; // pomocná proměnná @@ -251,15 +252,15 @@ void pridej() { - int g=1; - int f; // nahodne cislo v rozmezi 0-15 sloužící ke generování náhodnách souřadnic + int g=1; // pomocná proměnná + int f; // nahodne cislo v rozmezi 0-15 sloužící ke generování náhodnách souřadnic while(g==1) { f =(rand()+int(xAngle)+int(yAngle))%16; if(pole[f/4][f%4]==0) { - if((rand()+int(xAngle)+int(yAngle))%10==0) // reprezentuje 10% šanci, že se oběví 4 + if((rand()+int(xAngle)+int(yAngle))%10==1) // reprezentuje 10% šanci, že přidá číslo 4 { pole[f/4][f%4]=4; g=0; @@ -290,7 +291,7 @@ sedmy=0; osmy=0; - wait(0.00005); //proti tzv. duchum + wait(0.00005); //opatreni proti tzv. duchum if(k==0) { @@ -318,7 +319,6 @@ for(int j=0;j<4;j++) { - barva(j,k); for(int i=11;i>0;i--) @@ -491,12 +491,16 @@ RED=10; GREEN=10; BLUE=10; - } + } + + RED=RED*BRIGHTNESS/10; + GREEN=GREEN*BRIGHTNESS/10; + BLUE=BLUE*BRIGHTNESS/10; } ////////////////////////////////////////////////////////////////////////////////////// -void accelerometer() +void akcelerometr() { float ax, ay, az; @@ -506,24 +510,22 @@ xAngle = atan( ax / (sqrt((ay)*(ay) + (az)*(az)))) * 60; yAngle = atan( ay / (sqrt((ax)*(ax) + (az)*(az)))) * 60; - - + if((abs(xAngle)+abs(yAngle))<NULL_ANGLE) { - acc_dir = '0'; // 0 nula + naklon = '0'; // 0 nula } - - + if(abs(xAngle) >= abs(yAngle)) { if(xAngle >= MOVE_ANGLE) { - acc_dir = 'U'; // +X up + naklon = 'U'; // +X up } if(xAngle <= -MOVE_ANGLE) { - acc_dir = 'D'; // -X down + naklon = 'D'; // -X down } } @@ -531,12 +533,12 @@ { if(yAngle >= MOVE_ANGLE) { - acc_dir = 'L'; // +Y left + naklon = 'L'; // +Y left } if(yAngle <= -MOVE_ANGLE) { - acc_dir = 'R'; // -Y right + naklon = 'R'; // -Y right } } } \ No newline at end of file