Semestrálna práca VÝTAH Roman Ciesarík

Dependencies:   MMA8451Q mbed

Revision:
4:f2b6a3558671
Parent:
3:ac8b2de52239
Child:
5:c1952cbf8111
--- a/main.cpp	Tue Dec 12 15:20:29 2017 +0000
+++ b/main.cpp	Tue Dec 12 20:55:43 2017 +0000
@@ -70,32 +70,54 @@
 
 
 char demo[]= {1,2,3,4,5,6};
-char prijemSpravy[15];
+char prijemSpravy[30];
 char diode_DATA[]={0x00,0x01};
 int diode_cislo[]={0,0,0,0,0};
 int stav=5;
+//int poradie[]={0,0,0,0,0};
 
 
 int main()
 {
-    
+    pc.attach(&prijmemSpravu);
     //dole();
 while(true)
 {
-    pc.attach(&prijmemSpravu);
+    
     rozhodni();
-    
+   /* for(int i=0;i<5;i++)
+        if(diode_cislo[i]!=0)
+        {
+            if(i<stav){dole();break;}
+            else {hore();break;}
+        }
+       */
+
     
     /*stop();
     wait(1);
     hore();*/
 }   
 }
+/*
 void pohyb()
 {
-    
+
+
+    switch(stav)
+    {
+        case 5: dole(); break;
+        case 4: 
+            if(diode_cislo[4]==1)
+         break;
+        case 3: break;
+        case 2: break;
+        case 1: break;
+        case 0: break;
+        default: break;
+    }
 }
-
+*/
 
 void zamkni()
 {
@@ -164,7 +186,10 @@
     {
         case 0xb4: /* vytah tla4idlo 4 poschodie   */
         poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]);
-        diode_cislo[4]=1;
+        diode_cislo[4]=1; 
+        zamkni();
+        if (stav <4) hore();
+        if (stav >4) dole();
         //dole();
             
         break;
@@ -172,47 +197,73 @@
         case 0xb3: /* vytah tla4idlo 3 poschodie   */
         poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[3]=1;
+            zamkni();
+            if (stav <3) hore();
+            if (stav >3) dole();
         break;
         
         case 0xb2: /* vytah tla4idlo 2 poschodie   */
         poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]);
         diode_cislo[2]=1;
-            
+        zamkni();
+            if (stav <2) hore();
+        if (stav >2) dole();
         break;
         
         case 0xb1: /* vytah tla4idlo 1 poschodie   */
         poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[1]=1;
+            zamkni();
+            if (stav <1) hore();
+        if (stav >1) dole();
         break;
         
         case 0xb0: /* vytah tla4idlo pr9zemie   */
         poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[0]=1;
+            zamkni();
+            if (stav <0) hore();
+        if (stav >0) dole();
         break;
         
         case 0xc4: /* chodba tla4idlo 4 poschodie   */
         poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[4]=1;
+            zamkni();
+            if (stav <4) hore();
+        if (stav >4) dole();
         break;
         
         case 0xc3: /* chodba tla4idlo 3 poschodie   */
         poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[3]=1;
+            zamkni();
+            if (stav <3) hore();
+        if (stav >3) dole();
         break;
         
         case 0xc2: /* chodba tla4idlo 2 poschodie   */
         poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[2]=1;
+            zamkni();
+            if (stav <2) hore();
+        if (stav >2) dole();
         break;
         
         case 0xc1: /* chodba tla4idlo 1 poschodie   */
         poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[1]=1;
+            zamkni();
+            if (stav <1) hore();
+        if (stav >2) dole();
         break;
         
         case 0xc0: /* chodba tla4idlo pr9zemie   */
         poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[0]=1;
+            zamkni();
+            if (stav <0) hore();
+        if (stav >0) dole();
             //hore();
         break;
         
@@ -223,35 +274,45 @@
             if(prijemSpravy[4]==0x01&&diode_cislo[4]==1){stop();
             poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[0]);
             poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[0]);
-            diode_cislo[4]=0;}
+            diode_cislo[4]=0;
+            stav=4;}
+            if(prijemSpravy[4]==0x02&&stav==4){wait(1);odomkni();}
         break;
         
         case 0xe3: /* info pre odomknutie 3 poschodie   */
             if(prijemSpravy[4]==0x01&&diode_cislo[3]==1){stop();
             poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[0]);
             poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[0]);
-            diode_cislo[3]=0;}
+            diode_cislo[3]=0;
+            stav=3;}
+            if(prijemSpravy[4]==0x02&&stav==3){wait(1);odomkni();}
         break;
         
         case 0xe2: /* info pre odomknutie 2 poschodie   */
             if(prijemSpravy[4]==0x01&&diode_cislo[2]==1){stop();
             poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[0]);
             poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[0]);
-            diode_cislo[2]=0;}
+            diode_cislo[2]=0;
+            stav=2;}
+            if(prijemSpravy[4]==0x02&&stav==2){wait(1);odomkni();}
         break;
         
         case 0xe1: /* info pre odomknutie 1 poschodie   */
             if(prijemSpravy[4]==0x01&&diode_cislo[1]==1){stop();
             poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[0]);
             poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[0]);
-            diode_cislo[1]=0;}
+            diode_cislo[1]=0;
+            stav=1;}
+            if(prijemSpravy[4]==0x02&&stav==1){wait(1);odomkni();}
         break;
         
         case 0xe0: /* info pre odomknutie prízemie   */
             if(prijemSpravy[4]==0x01&&diode_cislo[0]==1){stop();
             poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[0]);
             poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[0]);
-            diode_cislo[0]=0;}
+            diode_cislo[0]=0;
+            stav=0;}
+            if(prijemSpravy[4]==0x02&&stav==0){wait(1);odomkni();}
         break;
         
         
@@ -265,6 +326,7 @@
         case 0xfe: /* watchdog */
             
         break;
+        default: break;
     }  
 }