Advertisement
Guest User

Untitled

a guest
May 20th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.34 KB | None | 0 0
  1.  
  2.  
  3. #define WAITING_FOR_CAR_TIME 20 // 2 sekundy
  4. #define MAX_GREEN_TIME 30 // 30 sekund
  5.  
  6. enum TRYBY
  7. {
  8.     Adaptacyjny,
  9.     Manualny,
  10.     Nocny
  11. };
  12.  
  13. enum AKCJA
  14. {
  15.     P,
  16.     Z1_Z5, Z2_Z6, Z3_Z7, Z4_Z8,
  17.     Z1_Z2, Z3_Z4, Z5_Z6, Z7_Z8,
  18.     P_Z1, P_Z2, P_Z3, P_Z4, P_Z5, P_Z6, P_Z7, P_Z8 
  19. };
  20.  
  21. enum STANY
  22. {
  23.     L_1, L_2, L_3, L_4,
  24.  
  25.     T_1, T_2, T_3,
  26.  
  27.     N_1,
  28.     N_21, N_22, N_23, N_24, N_25, N_26,
  29.     N_31, N_32, N_33, N_34, N_35, N_36,
  30.  
  31.     M_1, M_2, M_3, M_4,
  32.     M_1_WY_wait, M_1_G_wait, M_1_D_wait,
  33.     M_2_WY_wait, M_2_G_wait, M_2_D_wait,
  34.     M_3_WY_wait, M_3_G_wait, M_3_D_wait,
  35.     M_4_WY_wait, M_4_G_wait, M_4_D_wait,
  36.     M_11, M_12, M_13,
  37.     M_11_WY_wait, M_11_WS_wait, M_11_G_wait, M_11_D_wait,
  38.     M_12_WY_wait, M_12_WS_wait, M_12_G_wait, M_12_D_wait,
  39.     M_13_WY_wait, M_13_WS_wait, M_13_G_wait, M_13_D_wait,
  40.     M_21, M_31, M_41,
  41.     M_21_WY_wait, M_21_WS_wait, M_21_G_wait, M_21_D_wait, M_21_L_wait, M_21_P_wait,
  42.     M_31_WY_wait, M_31_WS_wait, M_31_G_wait, M_31_D_wait, M_31_L_wait, M_31_P_wait,
  43.     M_41_WY_wait, M_41_WS_wait, M_41_G_wait, M_41_D_wait, M_41_L_wait, M_41_P_wait,
  44.  
  45.  
  46.  
  47.     Z_1, Z_2
  48.    
  49. };
  50.  
  51. AKCJA aktualny_stan_swiatel;
  52.  
  53. TRYBY aktualny_tryb, nowy_tryb;
  54.  
  55. STANY
  56.         stan_licznik_11, stan_licznik_12,
  57.         stan_licznik_21, stan_licznik_22,
  58.         stan_licznik_31, stan_licznik_32,
  59.         stan_licznik_41, stan_licznik_42,
  60.         stan_licznik_51, stan_licznik_52,
  61.         stan_licznik_61, stan_licznik_62,
  62.         stan_licznik_71, stan_licznik_72,
  63.         stan_licznik_81, stan_licznik_82,
  64.         stan_t1, stan_t2, stan_t3, stan_t4, stan_t5, stan_t6, stan_t7, stan_t8,
  65.         stan_Menu;
  66.  
  67. int
  68.     licznik_Z1, licznik_Z2, licznik_Z3,licznik_Z4,licznik_Z5, licznik_Z6, licznik_Z7, licznik_Z8,   //zliczanie samochodów, które przejechały
  69.     licznik_1, licznik_2, licznik_3,licznik_4,licznik_5, licznik_6, licznik_7, licznik_8,           //sprawdznaie czy samocody opóściły skrzyżowanie
  70.     f_t1, f_t2, f_t3, f_t4, f_t5, f_t6, f_t7, f_t8,
  71.     tim_t1, tim_t2, tim_t3, tim_t4, tim_t5, tim_t6, tim_t7, tim_t8,
  72.     czy_odjechal,
  73.     stan_swiatel, // maska bitowa dla sygnalizatorów
  74.     kolejnosc[8] = {1,2,3,4,5,6,7,8},
  75.     kolejnosc_temp[8] = {1,2,3,4,5,6,7,8},
  76.     czasy_manualny[8] = {10,10,10,10,10,10,10,10},
  77.     czasy_adaptacyjny[8] = {10,10,10,10,10,10,10},
  78.     czasy_manualny_temp[8] = {10,10,10,10,10,10,10,10},
  79.     wspolczynniki_adaptacyjny[8] = {5,5,5,5,5,5,5,5},
  80.     wspolczynniki_adaptacyjny_temp[8] = {5,5,5,5,5,5,5,5},
  81.     indeks_aktualnie_edytowanej_sekwencji;
  82. ;
  83.  
  84.  
  85. char K_LEWO, K_PRAWO, K_GORA, K_DOL, K_WSTECZ, K_WYBIERZ;
  86.  
  87. char
  88.     czy_zmienic_stan_swiatel,
  89.     czy_zmienic_tryb,
  90.     czy_trwa_zminianie_trybu,
  91.     czy_zaktualizowac_wyswietlacz,
  92.     czy_wyswietlac_kursor;
  93.  
  94.  
  95. void ustaw_wejscia()
  96. {
  97.     K_LEWO = aK8;
  98.     K_PRAWO = aK7;
  99.     K_DOL = aK6;
  100.     K_GORA = aK5;
  101.     K_WSTECZ = aK2;
  102.     K_WYBIERZ = aK1;
  103. }
  104.  
  105. void ustaw_wyjscia()
  106. {
  107.     L8 = K_LEWO;
  108.     L7 = K_PRAWO;
  109.     L6 = K_DOL;
  110.     L5 = K_GORA;
  111.     L3 = czy_trwa_zminianie_trybu; //TODO: Czy na pewno tak?
  112.     L2 = K_WSTECZ;
  113.     L1 = K_WYBIERZ;
  114. }
  115.  
  116. void zliczaj_i_sprwdzaj_czy_odjechal()
  117. {
  118.     // Dla Z1
  119.     switch(stan_licznik_11)
  120.     {
  121.         case L_1: if(X1&&Z1) stan_licznik_11 = L_2; break;
  122.         case L_2: if(!X1) {stan_licznik_11 = L_1; ++licznik_1; ++licznik_Z1;} break;
  123.     }
  124.     switch(stan_licznik_12)
  125.     {
  126.         case L_3: if(X11) {stan_licznik_12 = L_4; --licznik_1;} break;
  127.         case L_4: if(!X11) stan_licznik_12 = L_3; break;
  128.     }
  129.  
  130.     // Dla Z2
  131.     switch(stan_licznik_21)
  132.     {
  133.         case L_1: if(X2&&Z2) stan_licznik_21 = L_2; break;
  134.         case L_2: if(!X2) {stan_licznik_21 = L_1; ++licznik_2; ++licznik_Z2;} break;
  135.     }
  136.     switch(stan_licznik_22)
  137.     {
  138.         case L_3: if(X10) {stan_licznik_22 = L_4; --licznik_2;} break;
  139.         case L_4: if(!X10) stan_licznik_22 = L_3; break;
  140.     }
  141.  
  142.     // Dla Z3
  143.     switch(stan_licznik_31)
  144.     {
  145.         case L_1: if(X3&&Z3) stan_licznik_31 = L_2; break;
  146.         case L_2: if(!X3) {stan_licznik_31 = L_1; ++licznik_3; ++licznik_Z3;} break;
  147.     }
  148.     switch(stan_licznik_32)
  149.     {
  150.         case L_3: if(X12) {stan_licznik_32 = L_4; --licznik_3;} break;
  151.         case L_4: if(!X12) stan_licznik_32 = L_3; break;
  152.     }
  153.  
  154.     // Dla Z4
  155.     switch(stan_licznik_41)
  156.     {
  157.         case L_1: if(X4&&Z4) stan_licznik_41 = L_2; break;
  158.         case L_2: if(!X4) {stan_licznik_41 = L_1; ++licznik_4; ++licznik_Z4;} break;
  159.     }
  160.     switch(stan_licznik_42)
  161.     {
  162.         case L_3: if(X11) {stan_licznik_42 = L_4; --licznik_4;} break;
  163.         case L_4: if(!X11) stan_licznik_42 = L_3; break;
  164.     }
  165.  
  166.     // Dla Z5
  167.     switch(stan_licznik_51)
  168.     {
  169.         case L_1: if(X5&&Z5) stan_licznik_51 = L_2; break;
  170.         case L_2: if(!X5) {stan_licznik_51 = L_1; ++licznik_5; ++licznik_Z5;} break;
  171.     }
  172.     switch(stan_licznik_52)
  173.     {
  174.         case L_3: if(X9) {stan_licznik_52 = L_4; --licznik_5;} break;
  175.         case L_4: if(!X9) stan_licznik_52 = L_3; break;
  176.     }
  177.  
  178.     // Dla Z6
  179.     switch(stan_licznik_61)
  180.     {
  181.         case L_1: if(X6&&Z6) stan_licznik_61 = L_2; break;
  182.         case L_2: if(!X6) {stan_licznik_61 = L_1; ++licznik_6; ++licznik_Z6;} break;
  183.     }
  184.     switch(stan_licznik_62)
  185.     {
  186.         case L_3: if(X12) {stan_licznik_62 = L_4; --licznik_6;} break;
  187.         case L_4: if(!X12) stan_licznik_62 = L_3;
  188.     }
  189.  
  190.     // Dla Z7
  191.     switch(stan_licznik_71)
  192.     {
  193.         case L_1: if(X7&&Z7) stan_licznik_71 = L_2; break;
  194.         case L_2: if(!X7) {stan_licznik_71 = L_1; ++licznik_7; ++licznik_Z7;}
  195.     }
  196.     switch(stan_licznik_72)
  197.     {
  198.         case L_3: if(X10) {stan_licznik_72 = L_4; --licznik_7;} break;
  199.         case L_4: if(!X10) stan_licznik_72 = L_3; break;
  200.     }
  201.  
  202.     // Dla Z8
  203.     switch(stan_licznik_81)
  204.     {
  205.         case L_1: if(X8&&Z8) stan_licznik_81 = L_2; break;
  206.         case L_2: if(!X8) {stan_licznik_81 = L_1; ++licznik_8; ++licznik_Z8;} break;
  207.     }
  208.     switch(stan_licznik_82)
  209.     {
  210.         case L_3: if(X9) {stan_licznik_82 = L_4; --licznik_8;} break;
  211.         case L_4: if(!X9) stan_licznik_82 = L_3; break;
  212.     }
  213. }
  214.  
  215. void sprawdzaj_zajetosc_pasa()
  216. {
  217.     //Dla Z1
  218.     if(stan_swiatel & 128)
  219.     {
  220.         switch(stan_t1)
  221.         {
  222.             case T_1: if(!X1) {stan_t1 = T_2; f_t1=0; tim_t1=0;} break;
  223.             case T_2: if(X1) stan_t1 = T_1;
  224.                       else if(tim_t1 > WAITING_FOR_CAR_TIME) stan_t1 = T_3; break;
  225.             case T_3: break;
  226.         }
  227.         ++tim_t1;
  228.     }
  229.  
  230.     //Dla Z2
  231.     if(stan_swiatel & 64)
  232.     {
  233.         switch(stan_t2)
  234.         {
  235.             case T_1: if(!X1) {stan_t2 = T_2; f_t2=0; tim_t2=0;} break;
  236.             case T_2: if(X1) stan_t2 = T_1;
  237.                       else if(tim_t2 > WAITING_FOR_CAR_TIME) stan_t2 = T_3; break;
  238.             case T_3: break;
  239.         }
  240.         ++tim_t2;
  241.     }
  242.  
  243.     //Dla Z3
  244.     if(stan_swiatel & 32)
  245.     {
  246.         switch(stan_t3)
  247.         {
  248.             case T_1: if(!X1) {stan_t3 = T_2; f_t3=0; tim_t3=0;} break;
  249.             case T_2: if(X1) stan_t3 = T_1;
  250.                       else if(tim_t3 > WAITING_FOR_CAR_TIME) stan_t3 = T_3; break;
  251.             case T_3: break;
  252.         }
  253.         ++tim_t3;
  254.     }
  255.  
  256.     //Dla Z4
  257.     if(stan_swiatel & 16)
  258.     {
  259.         switch(stan_t4)
  260.         {
  261.             case T_1: if(!X1) {stan_t4 = T_2; f_t4=0; tim_t4=0;} break;
  262.             case T_2: if(X1) stan_t4 = T_1;
  263.                       else if(tim_t4 > WAITING_FOR_CAR_TIME) stan_t4 = T_3; break;
  264.             case T_3: break;
  265.         }
  266.         ++tim_t4;
  267.     }
  268.  
  269.     //Dla Z5
  270.     if(stan_swiatel & 8)
  271.     {
  272.         switch(stan_t5)
  273.         {
  274.             case T_1: if(!X1) {stan_t5 = T_2; f_t5=0; tim_t5=0;} break;
  275.             case T_2: if(X1) stan_t5 = T_1;
  276.                       else if(tim_t5 > WAITING_FOR_CAR_TIME) stan_t5 = T_3; break;
  277.             case T_3: break;
  278.         }
  279.         ++tim_t5;
  280.     }
  281.  
  282.     //Dla Z6
  283.     if(stan_swiatel & 4)
  284.     {
  285.         switch(stan_t6)
  286.         {
  287.             case T_1: if(!X1) {stan_t6 = T_2; f_t6=0; tim_t6=0;} break;
  288.             case T_2: if(X1) stan_t6 = T_1;
  289.                       else if(tim_t6 > WAITING_FOR_CAR_TIME) stan_t6 = T_3; break;
  290.             case T_3: break;
  291.         }
  292.         ++tim_t6;
  293.     }
  294.  
  295.     //Dla Z7
  296.     if(stan_swiatel & 2)
  297.     {
  298.         switch(stan_t7)
  299.         {
  300.             case T_1: if(!X1) {stan_t7 = T_2; f_t7=0; tim_t7=0;} break;
  301.             case T_2: if(X1) stan_t7 = T_1;
  302.                       else if(tim_t7 > WAITING_FOR_CAR_TIME) stan_t7 = T_3; break;
  303.             case T_3: break;
  304.         }
  305.         ++tim_t7;
  306.     }
  307.  
  308.     //Dla Z8
  309.     if(stan_swiatel & 1)
  310.     {
  311.         switch(stan_t8)
  312.         {
  313.             case T_1: if(!X1) {stan_t8 = T_2; f_t8=0; tim_t8=0;} break;
  314.             case T_2: if(X1) stan_t8 = T_1;
  315.                       else if(tim_t8 > WAITING_FOR_CAR_TIME) stan_t8 = T_3; break;
  316.             case T_3: break;
  317.         }
  318.         ++tim_t8;
  319.     }
  320. }
  321.  
  322. void stan_swiatel_ustaw_zmienna()
  323. {
  324.     stan_swiatel = 0;
  325.     if(aktualny_stan_swiatel != P)
  326.     {
  327.         if(aktualny_stan_swiatel < Z1_Z5)
  328.         {
  329.             switch(aktualny_stan_swiatel)
  330.             {
  331.                 case P_Z1: stan_swiatel += 128; break;
  332.                 case P_Z2: stan_swiatel += 64;  break;
  333.                 case P_Z3: stan_swiatel += 32;  break;
  334.                 case P_Z4: stan_swiatel += 16;  break;
  335.                 case P_Z5: stan_swiatel += 8;   break;
  336.                 case P_Z6: stan_swiatel += 4;   break;
  337.                 case P_Z7: stan_swiatel += 2;   break;
  338.                 case P_Z8: stan_swiatel += 1;   break;
  339.             }
  340.         }
  341.         else
  342.         {
  343.             switch(aktualny_stan_swiatel)
  344.             {
  345.                 case Z1_Z5: stan_swiatel += 128 + 8;    break;
  346.                 case Z2_Z6: stan_swiatel += 64  + 4;    break;
  347.                 case Z3_Z7: stan_swiatel += 32  + 2;    break;
  348.                 case Z4_Z8: stan_swiatel += 16  + 1;    break;
  349.                 case Z1_Z2: stan_swiatel += 128 + 64;   break;
  350.                 case Z3_Z4: stan_swiatel += 32  + 16;   break;
  351.                 case Z5_Z6: stan_swiatel += 8   + 4;    break;
  352.                 case Z7_Z8: stan_swiatel += 2   + 1;    break;
  353.             }
  354.         }
  355.     }
  356. }
  357.  
  358. void ustaw_swiatla()
  359. {
  360.     Z1 = (stan_swiatel & 128)   ? 1 : 0;
  361.     Z2 = (stan_swiatel & 64)    ? 1 : 0;
  362.     Z3 = (stan_swiatel & 32)    ? 1 : 0;
  363.     Z4 = (stan_swiatel & 16)    ? 1 : 0;
  364.     Z5 = (stan_swiatel & 8)     ? 1 : 0;
  365.     Z6 = (stan_swiatel & 4)     ? 1 : 0;
  366.     Z7 = (stan_swiatel & 2)     ? 1 : 0;
  367.     Z8 = (stan_swiatel & 1)     ? 1 : 0;
  368. }
  369.  
  370. void ustaw_stan_swiatel()
  371. {
  372.     //TODO: Tu algorytm wyboru kolejnego stanu na podstawie tablic.
  373. }
  374.  
  375. void zmien_tryb()
  376. {
  377.     //TODO: Tu kod zmieniający tryb i ustawiający wartości początkowe zmiennych dla dango trybu.
  378. }
  379.  
  380. void ustaw_wyswietlacz()
  381. {
  382.     switch(stan_Menu)
  383.     {
  384.         case M_1:
  385.             {
  386.                 sprintf(buf,"Wybor trybu   <-");
  387.                 LCD_xy(1,1); LCD_puts(buf);
  388.                 sprintf(buf,"Edycja czasow   ");
  389.                 LCD_xy(1,2); LCD_puts(buf);
  390.                 break;
  391.             }
  392.         case M_2:
  393.             {
  394.                 sprintf(buf,"Edycja czasow <-");
  395.                 LCD_xy(1,1); LCD_puts(buf);
  396.                 sprintf(buf,"Edycja kolejki  ");
  397.                 LCD_xy(1,2); LCD_puts(buf);
  398.                 break;
  399.             }
  400.         case M_3:
  401.             {
  402.                 sprintf(buf,"Edycja kolejki<-");
  403.                 LCD_xy(1,1); LCD_puts(buf);
  404.                 sprintf(buf,"Edycja wspol.   ");
  405.                 LCD_xy(1,2); LCD_puts(buf);
  406.                 break;
  407.             }
  408.         case M_4:
  409.             {
  410.                 sprintf(buf,"Edycja kolejki  ");
  411.                 LCD_xy(1,1); LCD_puts(buf);
  412.                 sprintf(buf,"Edycja wspol. <-");
  413.                 LCD_xy(1,2); LCD_puts(buf);
  414.                 break;
  415.             }
  416.         case M_11:
  417.             {
  418.                 sprintf(buf,"Adaptacyjny   <-");
  419.                 LCD_xy(1,1); LCD_puts(buf);
  420.                 sprintf(buf,"Manualny        ");
  421.                 LCD_xy(1,2); LCD_puts(buf);
  422.                 break;
  423.             }
  424.         case M_12:
  425.             {
  426.                 sprintf(buf,"Manualny      <-");
  427.                 LCD_xy(1,1); LCD_puts(buf);
  428.                 sprintf(buf,"Nocny           ");
  429.                 LCD_xy(1,2); LCD_puts(buf);
  430.                 break;
  431.             }
  432.         case M_13:
  433.             {
  434.                 sprintf(buf,"Manualny        ");
  435.                 LCD_xy(1,1); LCD_puts(buf);
  436.                 sprintf(buf,"Nocny         <-");
  437.                 LCD_xy(1,2); LCD_puts(buf);
  438.                 break;
  439.             }
  440.         case M_21:
  441.             {
  442.                 sprintf(buf,"T%d = %ds         ", indeks_aktualnie_edytowanej_sekwencji+1, czasy_manualny_temp[indeks_aktualnie_edytowanej_sekwencji]);
  443.                 LCD_xy(1,1); LCD_puts(buf);
  444.                 sprintf(buf,"                ");
  445.                 LCD_xy(1,2); LCD_puts(buf);
  446.                 break;
  447.             }
  448.         case M_31:
  449.             {
  450.                 sprintf(buf,"1 2 3 4 5 6 7 8 ");
  451.                 LCD_xy(1,1); LCD_puts(buf);
  452.                 sprintf(buf,"%d %d %d %d %d %d %d %d ", kolejnosc_temp[0], kolejnosc_temp[1], kolejnosc_temp[2], kolejnosc_temp[3], kolejnosc_temp[4], kolejnosc_temp[5], kolejnosc_temp[6], kolejnosc_temp[7]);
  453.                 if(czy_wyswietlac_kursor) buf[indeks_aktualnie_edytowanej_sekwencji * 2 + 1] = '_';
  454.                 LCD_xy(1,2); LCD_puts(buf);
  455.                 break;
  456.             }
  457.         case M_41:
  458.             {
  459.                 sprintf(buf,"1 2 3 4 5 6 7 8 ");
  460.                 LCD_xy(1,1); LCD_puts(buf);
  461.                 sprintf(buf,"%d %d %d %d %d %d %d %d ", wspolczynniki_adaptacyjny_temp[0], wspolczynniki_adaptacyjny_temp[1], wspolczynniki_adaptacyjny_temp[2], wspolczynniki_adaptacyjny_temp[3], wspolczynniki_adaptacyjny_temp[4], wspolczynniki_adaptacyjny_temp[5], wspolczynniki_adaptacyjny_temp[6], wspolczynniki_adaptacyjny_temp[7]);
  462.                 if(czy_wyswietlac_kursor) buf[indeks_aktualnie_edytowanej_sekwencji * 2 + 1] = '_';
  463.                 LCD_xy(1,2); LCD_puts(buf);
  464.                 break;
  465.             }
  466.     }
  467. }
  468.  
  469. void ustaw_czasy_manualny_temp()
  470. {
  471.     for(int i = 0; i < 8; ++i) czasy_manualny_temp[i] = czasy_manualny[i];
  472.     indeks_aktualnie_edytowanej_sekwencji = 0;
  473. }
  474.  
  475. void ustaw_czasy_manualny()
  476. {
  477.     for(int i = 0; i < 8; ++i) czasy_manualny[i] = czasy_manualny_temp[i];
  478. }
  479.  
  480. void ustaw_wspolczynniki_adaptacyjny_temp()
  481. {
  482.     for(int i = 0; i < 8; ++i) wspolczynniki_adaptacyjny_temp[i] = wspolczynniki_adaptacyjny[i];
  483.     indeks_aktualnie_edytowanej_sekwencji = 0;
  484. }
  485.  
  486. void ustaw_wspolczynniki_adaptacyjny()
  487. {
  488.     for(int i = 0; i < 8; ++i) wspolczynniki_adaptacyjny[i] = wspolczynniki_adaptacyjny_temp[i];
  489. }
  490.  
  491. void ustaw_czasy_adaptacyjny()
  492. {
  493.     //TODO: Tu kod ustawiający nowe czasy dla trybu adaptacyjnego.
  494. }
  495.  
  496. void ustaw_kolejnosc_temp()
  497. {
  498.     for(int i = 0; i < 8; ++i) kolejnosc_temp[i] = kolejnosc[i];
  499.     indeks_aktualnie_edytowanej_sekwencji = 0;
  500. }
  501.  
  502. void ustaw_kolejnosc()
  503. {
  504.     for(int i = 0; i < 8; ++i) kolejnosc[i] = kolejnosc_temp[i];
  505. }
  506.  
  507. void obsluguj_menu()
  508. {
  509.     switch(stan_Menu)
  510.     {
  511.         case M_1:
  512.             {
  513.                 if(K_WYBIERZ) stan_Menu = M_1_WY_wait;
  514.                 else if(K_GORA) stan_Menu = M_1_G_wait;
  515.                 else if(K_DOL) stan_Menu = M_1_D_wait;
  516.                 break;
  517.             }
  518.         case M_1_WY_wait:
  519.             {
  520.                 if(!K_WYBIERZ){stan_Menu = M_11; czy_zaktualizowac_wyswietlacz = 1;}
  521.                 break;
  522.             }
  523.         case M_1_G_wait:
  524.             {
  525.                 if(!K_GORA) {stan_Menu = M_4; czy_zaktualizowac_wyswietlacz = 1;}
  526.                 break;
  527.             }
  528.         case M_1_D_wait:
  529.             {
  530.                 if(!K_DOL) {stan_Menu = M_2; czy_zaktualizowac_wyswietlacz = 1;}
  531.                 break;
  532.             }
  533.         case M_2:
  534.             {
  535.                 if(K_WYBIERZ) stan_Menu = M_2_WY_wait;
  536.                 else if(K_GORA) stan_Menu = M_2_G_wait;
  537.                 else if(K_DOL) stan_Menu = M_2_D_wait;
  538.                 break;
  539.             }
  540.         case M_2_WY_wait:
  541.             {
  542.                 if(!K_WYBIERZ){stan_Menu = M_21; ustaw_czasy_manualny_temp(); czy_zaktualizowac_wyswietlacz = 1;}
  543.                 break;
  544.             }
  545.         case M_2_G_wait:
  546.             {
  547.                 if(!K_GORA) {stan_Menu = M_1; czy_zaktualizowac_wyswietlacz = 1;}
  548.                 break;
  549.             }
  550.         case M_2_D_wait:
  551.             {
  552.                 if(!K_DOL) {stan_Menu = M_3; czy_zaktualizowac_wyswietlacz = 1;}
  553.                 break;
  554.             }
  555.         case M_3:
  556.             {
  557.                 if(K_WYBIERZ) stan_Menu = M_3_WY_wait;
  558.                 else if(K_GORA) stan_Menu = M_3_G_wait;
  559.                 else if(K_DOL) stan_Menu = M_3_D_wait;
  560.                 break;
  561.             }
  562.         case M_3_WY_wait:
  563.             {
  564.                 if(!K_WYBIERZ){stan_Menu = M_31; ustaw_kolejnosc_temp(); czy_zaktualizowac_wyswietlacz = 1;}
  565.                 break;
  566.             }
  567.         case M_3_G_wait:
  568.             {
  569.                 if(!K_GORA) {stan_Menu = M_2; czy_zaktualizowac_wyswietlacz = 1;}
  570.                 break;
  571.             }
  572.         case M_3_D_wait:
  573.             {
  574.                 if(!K_DOL) {stan_Menu = M_4; czy_zaktualizowac_wyswietlacz = 1;}
  575.                 break;
  576.             }
  577.         case M_4:
  578.             {
  579.                 if(K_WYBIERZ) stan_Menu = M_4_WY_wait;
  580.                 else if(K_GORA) stan_Menu = M_4_G_wait;
  581.                 else if(K_DOL) stan_Menu = M_4_D_wait;
  582.                 break;
  583.             }
  584.         case M_4_WY_wait:
  585.             {
  586.                 if(!K_WYBIERZ){stan_Menu = M_41; ustaw_wspolczynniki_adaptacyjny_temp(); czy_zaktualizowac_wyswietlacz = 1;}
  587.                 break;
  588.             }
  589.         case M_4_G_wait:
  590.             {
  591.                 if(!K_GORA) {stan_Menu = M_3; czy_zaktualizowac_wyswietlacz = 1;}
  592.                 break;
  593.             }
  594.         case M_4_D_wait:
  595.             {
  596.                 if(!K_DOL) {stan_Menu = M_1; czy_zaktualizowac_wyswietlacz = 1;}
  597.                 break;
  598.             }
  599.         case M_11:
  600.             {
  601.                 if(K_WYBIERZ) stan_Menu = M_11_WY_wait;
  602.                 else if(K_WSTECZ) stan_Menu = M_11_WS_wait;
  603.                 else if(K_GORA) stan_Menu = M_11_G_wait;
  604.                 else if(K_DOL) stan_Menu = M_11_D_wait;
  605.                 break;
  606.             }
  607.         case M_11_WY_wait:
  608.             {
  609.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zmienic_tryb = 1; nowy_tryb = Adaptacyjny; czy_zaktualizowac_wyswietlacz = 1;}
  610.                 break;
  611.             }
  612.         case M_11_WS_wait:
  613.             {
  614.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zaktualizowac_wyswietlacz = 1;}
  615.                 break;
  616.             }
  617.         case M_11_G_wait:
  618.             {
  619.                 if(!K_GORA) {stan_Menu = M_13; czy_zaktualizowac_wyswietlacz = 1;}
  620.                 break;
  621.             }
  622.         case M_11_D_wait:
  623.             {
  624.                 if(!K_DOL) {stan_Menu = M_12; czy_zaktualizowac_wyswietlacz = 1;}
  625.                 break;
  626.             }
  627.         case M_12:
  628.             {
  629.                 if(K_WYBIERZ) stan_Menu = M_12_WY_wait;
  630.                 else if(K_WSTECZ) stan_Menu = M_12_WS_wait;
  631.                 else if(K_GORA) stan_Menu = M_12_G_wait;
  632.                 else if(K_DOL) stan_Menu = M_12_D_wait;
  633.                 break;
  634.             }
  635.         case M_12_WY_wait:
  636.             {
  637.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zmienic_tryb = 1; nowy_tryb = Manualny; czy_zaktualizowac_wyswietlacz = 1;}
  638.                 break;
  639.             }
  640.         case M_12_WS_wait:
  641.             {
  642.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zaktualizowac_wyswietlacz = 1;}
  643.                 break;
  644.             }
  645.         case M_12_G_wait:
  646.             {
  647.                 if(!K_GORA) {stan_Menu = M_11; czy_zaktualizowac_wyswietlacz = 1;}
  648.                 break;
  649.             }
  650.         case M_12_D_wait:
  651.             {
  652.                 if(!K_DOL) {stan_Menu = M_13; czy_zaktualizowac_wyswietlacz = 1;}
  653.                 break;
  654.             }
  655.         case M_13:
  656.             {
  657.                 if(K_WYBIERZ) stan_Menu = M_13_WY_wait;
  658.                 else if(K_WSTECZ) stan_Menu = M_13_WS_wait;
  659.                 else if(K_GORA) stan_Menu = M_13_G_wait;
  660.                 else if(K_DOL) stan_Menu = M_13_D_wait;
  661.                 break;
  662.             }
  663.         case M_13_WY_wait:
  664.             {
  665.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zmienic_tryb = 1; nowy_tryb = Nocny; czy_zaktualizowac_wyswietlacz = 1;}
  666.                 break;
  667.             }
  668.         case M_13_WS_wait:
  669.             {
  670.                 if(!K_WYBIERZ){stan_Menu = M_1; czy_zaktualizowac_wyswietlacz = 1;}
  671.                 break;
  672.             }
  673.         case M_13_G_wait:
  674.             {
  675.                 if(!K_GORA) {stan_Menu = M_12; czy_zaktualizowac_wyswietlacz = 1;}
  676.                 break;
  677.             }
  678.         case M_13_D_wait:
  679.             {
  680.                 if(!K_DOL) {stan_Menu = M_11; czy_zaktualizowac_wyswietlacz = 1;}
  681.                 break;
  682.             }
  683.         case M_21:
  684.             {
  685.                 if(K_WYBIERZ) stan_Menu = M_21_WY_wait;
  686.                 else if(K_WSTECZ) stan_Menu = M_21_WS_wait;
  687.                 else if(K_GORA && czasy_manualny_temp[indeks_aktualnie_edytowanej_sekwencji] < MAX_GREEN_TIME) stan_Menu = M_21_G_wait;
  688.                 else if(K_DOL && czasy_manualny_temp[indeks_aktualnie_edytowanej_sekwencji] > 0) stan_Menu = M_21_D_wait;
  689.                 else if(K_LEWO) stan_Menu = M_21_L_wait;
  690.                 else if(K_PRAWO) stan_Menu = M_21_P_wait;
  691.                 break;
  692.             }
  693.         case M_21_WY_wait:
  694.             {
  695.                 if(!K_WYBIERZ){stan_Menu = M_2; ustaw_czasy_manualny(); czy_zaktualizowac_wyswietlacz = 1;}
  696.                 break;
  697.             }
  698.         case M_21_WS_wait:
  699.             {
  700.                 if(!K_WYBIERZ){stan_Menu = M_2; czy_zaktualizowac_wyswietlacz = 1;}
  701.                 break;
  702.             }
  703.         case M_21_G_wait:
  704.             {
  705.                 if(!K_GORA) {stan_Menu = M_21; ++czasy_manualny_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  706.                 break;
  707.             }
  708.         case M_21_D_wait:
  709.             {
  710.                 if(!K_DOL) {stan_Menu = M_21; --czasy_manualny_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  711.                 break;
  712.             }
  713.         case M_21_L_wait:
  714.             {
  715.                 if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji == 0) {stan_Menu = M_21; indeks_aktualnie_edytowanej_sekwencji = 7; czy_zaktualizowac_wyswietlacz = 1;}
  716.                 else if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji > 0) { stan_Menu = M_21; --indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  717.                 break;
  718.             }
  719.         case M_21_P_wait:
  720.             {
  721.                 if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji == 7) {stan_Menu = M_21; indeks_aktualnie_edytowanej_sekwencji = 0; czy_zaktualizowac_wyswietlacz = 1;}
  722.                 else if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji < 7) {stan_Menu = M_21; ++indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  723.                 break;
  724.             }
  725.         case M_31:
  726.             {
  727.                 if(K_WYBIERZ) {stan_Menu = M_31_WY_wait; ustaw_kolejnosc();}
  728.                 else if(K_WSTECZ) stan_Menu = M_31_WS_wait;
  729.                 else if(K_GORA && kolejnosc_temp[indeks_aktualnie_edytowanej_sekwencji] < 8) stan_Menu = M_31_G_wait;
  730.                 else if(K_DOL && kolejnosc_temp[indeks_aktualnie_edytowanej_sekwencji] > 0) stan_Menu = M_31_D_wait;
  731.                 else if(K_LEWO) stan_Menu = M_31_L_wait;
  732.                 else if(K_PRAWO) stan_Menu = M_31_P_wait;
  733.                 break;
  734.             }
  735.         case M_31_WY_wait:
  736.             {
  737.                 if(!K_WYBIERZ){stan_Menu = M_3; ustaw_kolejnosc(); czy_zaktualizowac_wyswietlacz = 1;}
  738.                 break;
  739.             }
  740.         case M_31_WS_wait:
  741.             {
  742.                 if(!K_WYBIERZ){stan_Menu = M_3; czy_zaktualizowac_wyswietlacz = 1;}
  743.                 break;
  744.             }
  745.         case M_31_G_wait:
  746.             {
  747.                 if(!K_GORA) {stan_Menu = M_31; ++kolejnosc_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  748.                 break;
  749.             }
  750.         case M_31_D_wait:
  751.             {
  752.                 if(!K_DOL) {stan_Menu = M_31; --kolejnosc_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  753.                 break;
  754.             }
  755.         case M_31_L_wait:
  756.             {
  757.                 if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji == 0) {stan_Menu = M_31; indeks_aktualnie_edytowanej_sekwencji = 7; czy_zaktualizowac_wyswietlacz = 1;}
  758.                 else if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji > 0) { stan_Menu = M_31; --indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  759.                 break;
  760.             }
  761.         case M_31_P_wait:
  762.             {
  763.                 if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji == 7) {stan_Menu = M_31; indeks_aktualnie_edytowanej_sekwencji = 0; czy_zaktualizowac_wyswietlacz = 1;}
  764.                 else if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji < 7) {stan_Menu = M_31; ++indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  765.                 break;
  766.             }
  767.         case M_41:
  768.             {
  769.                 if(K_WYBIERZ) stan_Menu = M_41_WY_wait;
  770.                 else if(K_WSTECZ) stan_Menu = M_41_WS_wait;
  771.                 else if(K_GORA && wspolczynniki_adaptacyjny_temp[indeks_aktualnie_edytowanej_sekwencji] < 5) stan_Menu = M_41_G_wait;
  772.                 else if(K_DOL && wspolczynniki_adaptacyjny_temp[indeks_aktualnie_edytowanej_sekwencji] > 1) stan_Menu = M_41_D_wait;
  773.                 else if(K_LEWO) stan_Menu = M_41_L_wait;
  774.                 else if(K_PRAWO) stan_Menu = M_41_P_wait;
  775.                 break;
  776.             }
  777.         case M_41_WY_wait:
  778.             {
  779.                 if(!K_WYBIERZ){stan_Menu = M_4; ustaw_wspolczynniki_adaptacyjny(); czy_zaktualizowac_wyswietlacz = 1;}
  780.                 break;
  781.             }
  782.         case M_41_WS_wait:
  783.             {
  784.                 if(!K_WYBIERZ){stan_Menu = M_4; czy_zaktualizowac_wyswietlacz = 1;}
  785.                 break;
  786.             }
  787.         case M_41_G_wait:
  788.             {
  789.                 if(!K_GORA) {stan_Menu = M_41; ++wspolczynniki_adaptacyjny_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  790.                 break;
  791.             }
  792.         case M_41_D_wait:
  793.             {
  794.                 if(!K_DOL) {stan_Menu = M_41; --wspolczynniki_adaptacyjny_temp[indeks_aktualnie_edytowanej_sekwencji]; czy_zaktualizowac_wyswietlacz = 1;}
  795.                 break;
  796.             }
  797.         case M_41_L_wait:
  798.             {
  799.                 if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji == 0) {stan_Menu = M_41; indeks_aktualnie_edytowanej_sekwencji = 7; czy_zaktualizowac_wyswietlacz = 1;}
  800.                 else if(!K_LEWO && indeks_aktualnie_edytowanej_sekwencji > 0) { stan_Menu = M_41; --indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  801.                 break;
  802.             }
  803.         case M_41_P_wait:
  804.             {
  805.                 if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji == 7) {stan_Menu = M_41; indeks_aktualnie_edytowanej_sekwencji = 0; czy_zaktualizowac_wyswietlacz = 1;}
  806.                 else if(!K_PRAWO && indeks_aktualnie_edytowanej_sekwencji < 7) {stan_Menu = M_41; ++indeks_aktualnie_edytowanej_sekwencji; czy_zaktualizowac_wyswietlacz = 1;}
  807.                 break;
  808.             }
  809.     }
  810. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement