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

Dependencies:   MMA8451Q mbed

Revision:
10:346a5a5936b9
Parent:
9:51cf1120b4f4
Child:
11:a9918a8441a9
--- a/main.cpp	Sun Jan 07 21:09:44 2018 +0000
+++ b/main.cpp	Mon Jan 08 15:00:34 2018 +0000
@@ -8,40 +8,15 @@
 unsigned int velkost;
 char crc=0x00;
 
-char crc8table[256] = {
-    0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
-    157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
-    35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
-    190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
-    70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
-    219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
-    101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
-    248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
-    140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
-    17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
-    175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
-    50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
-    202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
-    87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
-    233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
-    116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
-};
-
-// crc [0xA0, prijem, odosielatel, vrlkost dat , data (256),crc]
-//char odosli[5+sizeof(DATA)];
 DigitalOut myled(LED3);
 DigitalOut myled2(LED2);
 
-
-
 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};
 
-
-
 char buffer_kto[100];
 char buffer_co[100];
 int buff_index=0;
@@ -50,127 +25,32 @@
 int main()
 {
     pc.attach(&prijmemSpravu);
-     init_freeFall();
-    //dole();
-while(true)
-{
-     //init_freeFall();
-    rozhodni();
-    if(freeFall_status()){
-            zamkni();
-            stop();
-            myled=1;
-            myled2=1;
-            break;
+    init_freeFall();
+    
+    while(true)
+    {
+        rozhodni();
+        if(freeFall_status())
+            {
+                zamkni();
+                stop();
+                myled=1;
+                myled2=1;
+                break;
             }
-   /* for(int i=0;i<5;i++)
-        if(diode_cislo[i]!=0)
-        {
-            if(i<stav){dole();break;}
-            else {hore();break;}
-        }
-       */
-/*
-      if(cyklus<100)
-        {
-            rozhodni(buffer_kto[cyklus], buffer_co[cyklus]);
-            cyklus++;
-        }
-    else
-    {
-       cyklus=0; 
-       rozhodni(buffer_kto[cyklus], buffer_co[cyklus]);
-       cyklus++; 
-    }
-*/
-    
-    /*stop();
-    wait(1);
-    hore();*/
-}   
+    }   
 }
 
 void pohyb(int kam)
 {
     zamkni();
-     if (stav <kam) {hore();vytahDisplay(1,kam);}
-        if (stav >kam) {dole();vytahDisplay(2,kam);}
+    if (stav <kam) {hore();vytahDisplay(1,kam);}
+    if (stav >kam) {dole();vytahDisplay(2,kam);}
 
-/*
-    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 vytahDisplay(int smer, int poschodie)
-{
-    char dPole [2];
-    switch(smer)
-    {
-        
-        case  0: dPole[0]=0xFF; break;
-        case  1: dPole[0]=0x01; break;//hore
-        case  2: dPole[0]=0x02; break;//dole
-    }
-    switch(poschodie)
-    {
-        case 0: dPole[1]=0x50; break;
-        case 1: dPole[1]=0x31; break;
-        case 2: dPole[1]=0x32; break;
-        case 3: dPole[1]=0x33; break;
-        case 4: dPole[1]=0x34; break;
-        default:
-                dPole[1]=0x2D;
-    }
-
-    poslemSpravu(DISPLAY, 0xcc, 0x02, dPole);
-}
-
-
-void zamkni()
-{   
-    
-    char DATA[]= {0x01};
-    poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
-}
-
-void odomkni()
-{
-    wait(1);
-    char DATA[]= {0x00};
-    poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
-    wait(1);
-}
-
-void stop()
-{
-    char DATA[]= {0x01};
-    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
-}
-
-void hore()
-{
-    char DATA[]= {0x02,0x64,0x00,0x00,0x00};
-    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);   
-}
-
-void dole()
-{
-    char DATA[]= {0x02,0x9c,0xff,0xff,0xff};
-    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
 }
 
 void prijmemSpravu()
 {
-    //pc.attach(&prijmemSpravu);§
     myled=0; 
 
     for (int j=0;j<4;j++)
@@ -198,203 +78,196 @@
             }
         }    
     }
-   // if(buff_index<100)
-     //   {
-            buffer_kto[buff_index]=prijemSpravy[2];
-            buffer_co[buff_index]=prijemSpravy[4];
-       //     buff_index++;
-        /*}
-    else
-    {
-       buff_index=0; 
-       buffer_kto[buff_index]=prijemSpravy[2];
-       buffer_co[buff_index]=prijemSpravy[4];
-       buff_index++; 
-    }*/
-myled=1; 
-   pc.attach(&prijmemSpravu);
+    buffer_kto[buff_index]=prijemSpravy[2];
+    buffer_co[buff_index]=prijemSpravy[4];
+       
+    myled=1; 
+    pc.attach(&prijmemSpravu);
 }
 
 void rozhodni()
 { 
     myled2=0; 
     char bData=buffer_co[cyklus];
-  switch(buffer_kto[cyklus])
+    switch(buffer_kto[cyklus])
     {
         case 0xb4: /* vytah tla4idlo 4 poschodie   */
-        poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]);
-        diode_cislo[4]=1; 
-        
-       pohyb(4);
-            
+            poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]);
+            diode_cislo[4]=1; 
+            pohyb(4);
         break;
         
         case 0xb3: /* vytah tla4idlo 3 poschodie   */
-        poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[3]=1;
-           pohyb(3);
-
+            pohyb(3);
         break;
         
         case 0xb2: /* vytah tla4idlo 2 poschodie   */
-        poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]);
-        diode_cislo[2]=1;
-        pohyb(2);
+            poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]);
+            diode_cislo[2]=1;
+            pohyb(2);
         break;
         
         case 0xb1: /* vytah tla4idlo 1 poschodie   */
-        poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[1]=1;
             pohyb(1);
         break;
         
         case 0xb0: /* vytah tla4idlo pr9zemie   */
-        poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[0]=1;
-           pohyb(0);
+            pohyb(0);
         break;
         
         case 0xc4: /* chodba tla4idlo 4 poschodie   */
-        poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[4]=1;
             pohyb(4);
         break;
         
         case 0xc3: /* chodba tla4idlo 3 poschodie   */
-        poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[3]=1;
-           pohyb(3);
+            pohyb(3);
         break;
         
         case 0xc2: /* chodba tla4idlo 2 poschodie   */
-        poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[2]=1;
-           pohyb(2);
+            pohyb(2);
         break;
         
         case 0xc1: /* chodba tla4idlo 1 poschodie   */
-        poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[1]=1;
             pohyb(1);
         break;
         
         case 0xc0: /* chodba tla4idlo pr9zemie   */
-        poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]);
+            poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]);
             diode_cislo[0]=1;
-           pohyb(0);
+            pohyb(0);
         break;
         
         
         
         
         case 0xe4: /* info pre odomknutie 4 poschodie   */
-            if(bData==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;
-            stav=4;}
-            if(bData==0x02&&stav==4){wait(1);odomkni();//}
-            /*for (int kk=0;kk<5;kk++)
-            {}*/
-            if (diode_cislo[0]==1) pohyb(0);
-            else if (diode_cislo[1]==1) pohyb(1);
-            else if (diode_cislo[2]==1) pohyb(2);
-            else if (diode_cislo[3]==1) pohyb(3);}
-            //else if (diode_cislo[4]==1) pohyb(4);
-
-
+            if(bData==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;
+                stav=4;
+            }
+            
+            if(bData==0x02&&stav==4)
+            {
+                wait(1);
+                odomkni();
+            
+                if (diode_cislo[0]==1) pohyb(0);
+                else if (diode_cislo[1]==1) pohyb(1);
+                else if (diode_cislo[2]==1) pohyb(2);
+                else if (diode_cislo[3]==1) pohyb(3);
+            }
         break;
         
         case 0xe3: /* info pre odomknutie 3 poschodie   */
-            if(bData==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;
-            stav=3;}
-            if(bData==0x02&&stav==3){wait(1);odomkni();
+            if(bData==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;
+                stav=3;
+            }
+            
+            if(bData==0x02&&stav==3)
+            {
+                wait(1);
+                odomkni();
 
-            if (diode_cislo[0]==1) pohyb(0);
-            else if (diode_cislo[1]==1) pohyb(1);
-            else if (diode_cislo[2]==1) pohyb(2);
-            //else if (diode_cislo[3]==1) pohyb(3);
-            else if (diode_cislo[4]==1) pohyb(4);}
+                if (diode_cislo[0]==1) pohyb(0);
+                else if (diode_cislo[1]==1) pohyb(1);
+                else if (diode_cislo[2]==1) pohyb(2);
+                else if (diode_cislo[4]==1) pohyb(4);
+            }
         break;
         
         case 0xe2: /* info pre odomknutie 2 poschodie   */
-            if(bData==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;
-            stav=2;}
-            if(bData==0x02&&stav==2){wait(1);odomkni();//}
-
-            //vytahDisplay(2,2);
-
-            if (diode_cislo[0]==1) pohyb(0);
-            else if (diode_cislo[1]==1) pohyb(1);
-           // else if (diode_cislo[2]==1) pohyb(2);
-            else if (diode_cislo[3]==1) pohyb(3);
-            else if (diode_cislo[4]==1) pohyb(4);}
-
+            if(bData==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;
+                stav=2;
+            }
+            
+            if(bData==0x02&&stav==2)
+            {
+                wait(1);
+                odomkni();
+        
+                if (diode_cislo[0]==1) pohyb(0);
+                else if (diode_cislo[1]==1) pohyb(1);
+                else if (diode_cislo[3]==1) pohyb(3);
+                else if (diode_cislo[4]==1) pohyb(4);
+                }
         break;
         
         case 0xe1: /* info pre odomknutie 1 poschodie   */
-            if(bData==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;
-            stav=1;}
-            if(bData==0x02&&stav==1){wait(1);odomkni();//}
+            if(bData==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;
+                stav=1;
+            }
+            
+            if(bData==0x02&&stav==1)
+            {
+                wait(1);
+                odomkni();
         
-            if (diode_cislo[0]==1) pohyb(0);
-          //  else if (diode_cislo[1]==1) pohyb(1);
-            else if (diode_cislo[2]==1) pohyb(2);
-            else if (diode_cislo[3]==1) pohyb(3);
-            else if (diode_cislo[4]==1) pohyb(4);}
+                if (diode_cislo[0]==1) pohyb(0);
+          
+                else if (diode_cislo[2]==1) pohyb(2);
+                else if (diode_cislo[3]==1) pohyb(3);
+                else if (diode_cislo[4]==1) pohyb(4);
+            }
 
         break;
         
         case 0xe0: /* info pre odomknutie prízemie   */
-            if(bData==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;
-            stav=0;}
-            if(bData==0x02&&stav==0){wait(1);odomkni();//}
-
-            //if (diode_cislo[0]==1) pohyb(0);
-            if (diode_cislo[1]==1) pohyb(1);
-            else if (diode_cislo[2]==1) pohyb(2);
-            else if (diode_cislo[3]==1) pohyb(3);
-            else if (diode_cislo[4]==1) pohyb(4);}
+            if(bData==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;
+                stav=0;
+            }
+            
+            if(bData==0x02&&stav==0)
+            {
+                wait(1);
+                odomkni();
+                
+                if (diode_cislo[1]==1) pohyb(1);
+                else if (diode_cislo[2]==1) pohyb(2);
+                else if (diode_cislo[3]==1) pohyb(3);
+                else if (diode_cislo[4]==1) pohyb(4);}
+        break;
 
-        break;
-        
-        
-        
-        
-        
-        case 0xf: /* zachranna brzda */
-            
-        break;
-        
-        case 0xfe: /* watchdog */
-            
-        break;
         default: break;
     }  
-    /*if(cyklus<100)
-        {
-            //rozhodni(buffer_kto[cyklus], buffer_co[cyklus]);
-            cyklus++;
-        }
-    else
-    {
-       cyklus=0; 
-       //rozhodni(buffer_kto[cyklus], buffer_co[cyklus]);
-       //cyklus++; 
-    }
-*/ //pc.attach(&prijmemSpravu);
+ 
     myled=1; 
 }
 
@@ -410,17 +283,20 @@
     crc=crc8table[crc^adrRX];
     crc=crc8table[crc^adrTX];
 
-    for (i=0; i<velkost; i++) {
+    for (i=0; i<velkost; i++) 
+    {
         odosli[4+i]=DATA[i];
     }
 
-    for (i=0; i<velkost; i++) {
+    for (i=0; i<velkost; i++) 
+    {
         crc=crc8table[crc^DATA[i]];
     }
 
     odosli[velkost+4]=crc;
 
-    for (i=0; i<velkost+5; i++) {
+    for (i=0; i<velkost+5; i++) 
+    {
         pc.putc(odosli[i]);
     }