school project

Dependencies:   MMA8451Q mbed

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