semestralna praca

Dependencies:   FRDM_MMA8451Q

Revision:
7:f906eb062d36
Parent:
6:8c336acc90f9
Child:
8:3edf2e10899d
--- a/main.cpp	Tue Jan 09 13:22:45 2018 +0000
+++ b/main.cpp	Tue Jan 09 14:30:54 2018 +0000
@@ -6,6 +6,25 @@
 Serial term(USBTX, USBRX);
 DigitalOut led1(LED2);
 
+int main() {
+    
+    term.baud(57600);
+    term.attach(&prijmiSpravu, Serial::RxIrq);
+
+    disp.attach(&disp_Vyt, 0.5);
+    sleduj_cas.attach(&watchdog, 1.4);
+    acc.MotionDetection(&EM);
+    init();
+      
+    //int aDataIn[] = {*prerusVysielanie()};
+    // int dataSize1 = ARRAY_SIZE(aDataIn);
+   // posliSpravu(0xD0,0xAA,dataSize1,aDataIn);
+   
+  
+  while(1){
+    tlacitka();
+    }
+}
 
 
 
@@ -84,7 +103,7 @@
         }
     }
     
-       nice();
+       logikaRiadenia();
    
 }
 
@@ -96,6 +115,14 @@
     
     }
     
+    void EM()
+    {
+        
+    int aDataIn[] = {0x01};
+    int dataSize1 = ARRAY_SIZE(aDataIn);
+    posliSpravu(EM_BRAKE,0xAA,dataSize1,aDataIn);
+        }
+    
     void resWatch()
     {
         int aDataIn[] = {0x01};
@@ -104,7 +131,7 @@
         
         }
 
-void nice(){
+void logikaRiadenia(){
     
     if(init_flag == 1){
         if (dajPoschodie() == SWITCH_P){ 
@@ -121,6 +148,7 @@
             ledPoffC();
             stop();  
             odomkniVytah() ;
+            poschodie = 0;
             p_0 = 0;
         }    
         
@@ -134,6 +162,7 @@
             led1offC();
             stop();  
             odomkniVytah() ;
+            poschodie = 1;
             p_1 = 0;
         }    
         
@@ -146,6 +175,7 @@
             led2offC();
             stop();  
             odomkniVytah() ;
+            poschodie = 2;
             p_2 = 0;
         }    
         
@@ -158,6 +188,7 @@
             led3offC();
             stop();  
             odomkniVytah() ;
+            poschodie = 3;
             p_3 = 0;
         }    
     }
@@ -169,6 +200,7 @@
             led4off();
             stop();  
             odomkniVytah() ;
+            poschodie = 4;
             p_4 = 0;
         }    
         
@@ -178,6 +210,8 @@
     }
 
 
+
+
 void tlacitka()
 {
     
@@ -186,34 +220,78 @@
            case W_P_BUTTON:
            {
                 p_0 = 1;
-                smerDole();
                 ledPon();
                 
+                if (poschodie > 0)
+                {
+                    smerDole();
+                    } else if (poschodie < 0)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_0 = 0;
+                            ledPoff();
+                            }
+                
                 break;
                }
                
                case W_1_BUTTON:
            {
                 p_1 = 1;
-                smerHore();
                 led1on();
+                if (poschodie > 1)
+                {
+                    smerDole();
+                    } else if (poschodie < 1)
+                    {
+                        smerHore();
+                        } else 
+                        {
+                            p_1 = 0;
+                            led1off();
+                            }
+                
                 break;
                }
                
                case W_2_BUTTON:
            {
                 p_2 = 1;
-                smerDole();
                 led2on();
+                if (poschodie > 2)
+                {
+                    smerDole();
+                    } else if (poschodie < 2)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_2 = 0;
+                            led2off();
+                            }
                 break;
                }
                
                case W_3_BUTTON:
            {
                 p_3 = 1;
-                   
-                smerDole();
                 led3on();
+                if (poschodie > 3)
+                {
+                    smerDole();
+                    } else if (poschodie < 3)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_3 = 0;
+                            led3off();
+                            }
     
                 break;
                }
@@ -221,48 +299,114 @@
                case W_4_BUTTON:
            {
                 p_4 = 1;
-                smerHore();
                 led4on();
+                if (poschodie > 4)
+                {
+                    smerDole();
+                    } else if (poschodie < 4)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_4 = 0;
+                            led4off();
+                            }
                 break;
                }
                
                 case C_P_BUTTON:
            {
                 p_0 = 1;
-                smerHore();
                 ledPonC();
+                if (poschodie > 0)
+                {
+                    smerDole();
+                    } else if (poschodie < 0)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_0 = 0;
+                            ledPoffC();
+                            }
                 break;
                }
                
                case C_1_BUTTON:
            {
                 p_1 = 1;
-                smerHore();
                 led1onC();
+                if (poschodie > 1)
+                {
+                    smerDole();
+                    } else if (poschodie < 1)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_1 = 0;
+                            led1off();
+                            }
                 break;
                }
                
                case C_2_BUTTON:
            {
                 p_2 = 1;
-                smerHore();
                 led2onC();
+                if (poschodie > 2)
+                {
+                    smerDole();
+                    } else if (poschodie < 2)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_2 = 0;
+                            led2offC();
+                            }
                 break;
                }
                
                case C_3_BUTTON:
            {
                 p_3 = 1;
-                smerHore();
                 led3onC();
+                if (poschodie > 3)
+                {
+                    smerDole();
+                    } else if (poschodie < 3)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_3 = 0;
+                            led3offC();
+                            }
                 break;
                }
                
                case C_4_BUTTON:
            {
                 p_4 = 1;
-                smerHore();
                 led4onC();
+                if (poschodie > 4)
+                {
+                    smerDole();
+                    } else if (poschodie < 4)
+                    {
+                        smerHore();
+                        }
+                         else 
+                        {
+                            p_4 = 0;
+                            led4offC();
+                            }
                 break;
                }
               
@@ -273,7 +417,12 @@
  
     }
     
-    
+void watchdog()
+{
+        int aDataIn[] = {0x03};
+        int dataSize1 = ARRAY_SIZE(aDataIn);
+        posliSpravu(WATCHDOG,0xAA,dataSize1,aDataIn);
+    }    
 
 
 int dajPoschodie()
@@ -325,22 +474,7 @@
 
 
 
-int main() {
-    
-    term.baud(57600);
-   term.attach(&prijmiSpravu, Serial::RxIrq);
 
-      
-    //int aDataIn[] = {*prerusVysielanie()};
-    // int dataSize1 = ARRAY_SIZE(aDataIn);
-   // posliSpravu(0xD0,0xAA,dataSize1,aDataIn);
-   
-  
-  while(1){
-    //prijmi = 0;
-    tlacitka();
-    }
-}
 
 void init(){
     init_flag = 1;