school project

Dependencies:   MMA8451Q mbed

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