Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.31 KB | None | 0 0
  1. int st1=13,st2=12,st3=11,st4=10,st5=9,st6=8,ri1=2,ri2=3,ri3=4,ri4=5,ri5=6,ri6=7,upArr=A0,downArr=A1,leftArr=A2,rightArr=A3;
  2. int stlpce[]={st1,st2,st3,st4,st5,st6};
  3. int riadky[]={ri1,ri2,ri3,ri4,ri5,ri6};
  4. int tlacidla[]={upArr,downArr,leftArr,rightArr};
  5. int stavTlacidla(int tlacidlo);
  6. int pocetStlaceni0=0,pocetStlaceni1=0,pocetStlaceni2=0,pocetStlaceni3=0;
  7. int pocetStlaceniX[]={pocetStlaceni0,pocetStlaceni1,pocetStlaceni2,pocetStlaceni3};
  8. void zobrazZnak(int riadok,int stlpec);
  9. void specDelay(int time);
  10. int j=3,k=3,counter0=0,l=0,counter1=0,counter2=0;
  11. int stlpecPotrava[]={1,2,3,4};
  12. int riadokPotrava[]={2,4,1,3};
  13. void zobrazPotrava();
  14. int stlpceHistory[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  15. int riadkyHistory[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  16. void poleUpdate();
  17. void driverFunction();
  18.  
  19. void setup(){
  20.   for(int i=0;i<6;i++){
  21.     pinMode(stlpce[i],OUTPUT);
  22.     digitalWrite(stlpce[i],LOW);
  23.     pinMode(riadky[i],OUTPUT);
  24.     digitalWrite(riadky[i],HIGH);
  25.   }
  26.   Serial.begin(9600);
  27. }
  28.  
  29. void loop(){
  30.   specDelay(1);
  31.   if(pocetStlaceni0==0 && pocetStlaceni1==0 && pocetStlaceni2==0 && pocetStlaceni3==0){
  32.     Serial.write(0);
  33.   }
  34.    if(pocetStlaceniX[0]==1){
  35.      Serial.write(2);
  36.       while(pocetStlaceniX[0]==1){
  37.         specDelay(1);
  38.         j--;
  39.         if(j<0){
  40.           j=5;
  41.         }
  42.         driverFunction();
  43.       }
  44.     }
  45.   if(pocetStlaceniX[1]==1){
  46.       Serial.write(2);
  47.       while(pocetStlaceniX[1]==1){
  48.         specDelay(1);
  49.         j++;
  50.         if(j>5){
  51.           j=0;
  52.         }
  53.         driverFunction();
  54.       }
  55.     }
  56.   if(pocetStlaceniX[2]==1){
  57.     Serial.write(2);  
  58.     while(pocetStlaceniX[2]==1){
  59.         specDelay(1);
  60.         k--;
  61.         if(k<0){
  62.           k=5;
  63.         }
  64.         driverFunction();
  65.       }
  66.     }
  67.   if(pocetStlaceniX[3]==1){
  68.     Serial.write(2);  
  69.     while(pocetStlaceniX[3]==1){
  70.         specDelay(1);
  71.         k++;
  72.         if(k>5){
  73.           k=0;
  74.         }
  75.         driverFunction();
  76.       }
  77.     }
  78. }
  79.  
  80. int stavTlacidla(int tlacidlo){
  81.   if(analogRead(tlacidlo)<300){
  82.     delay(20);
  83.     if(analogRead(tlacidlo)==0){
  84.       while(analogRead(tlacidlo)==0){}
  85.       delay(20);
  86.       return 1;
  87.     }
  88.   }
  89.   return 0;
  90. }
  91.  
  92. void zobrazZnak(int riadok,int stlpec){
  93.   for(int i=0;i<6;i++){
  94.     if(i==stlpec){
  95.      digitalWrite(stlpce[i],HIGH);
  96.     }
  97.     for(int j=0;j<6;j++){
  98.       if(j==riadok){
  99.         digitalWrite(riadky[j],LOW);
  100.       }
  101.     }
  102.   }
  103.   delay(5);
  104.   for(int i=0;i<6;i++){
  105.     if(i==stlpec){
  106.      digitalWrite(stlpce[i],LOW);
  107.     }
  108.     for(int j=0;j<6;j++){
  109.       if(j==riadok){
  110.         digitalWrite(riadky[j],HIGH);
  111.       }
  112.     }
  113.   }
  114. }
  115.  
  116. void specDelay(int time){
  117.   for(int i=0;i<4;i++){
  118.     if(stavTlacidla(tlacidla[i])==1){
  119.       pocetStlaceniX[i]=1;
  120.       for(int j=3;j>=0;j--){
  121.         if(i!=j){
  122.             pocetStlaceniX[j]=0;
  123.         }
  124.       }
  125.     }
  126.   }
  127.   delay(time);
  128. }
  129.  
  130. void zobrazPotrava(){
  131.   if(counter0>2){
  132.    zobrazZnak(riadokPotrava[l],stlpecPotrava[l]);
  133.    delay(5);
  134.   }
  135. }
  136.  
  137. void poleUpdate(){
  138.   for(int i=35;i>0;i--){
  139.    stlpceHistory[i]=stlpceHistory[i-1];
  140.   }
  141.   stlpceHistory[0]=k;
  142.   for(int i=35;i>0;i--){
  143.    riadkyHistory[i]=riadkyHistory[i-1];
  144.   }
  145.   riadkyHistory[0]=j;
  146.   for(int i=1;i<=counter1;i++){
  147.     if(stlpceHistory[i]==k && riadkyHistory[i]==j){
  148.         counter2=1;
  149.         Serial.write(counter2);
  150.     }
  151.   }
  152. }
  153.  
  154. void driverFunction(){
  155.   poleUpdate();
  156.         for(int i=0;i<20;i++){
  157.             for(int m=0;m<=counter1;m++){
  158.             zobrazZnak(riadkyHistory[m],stlpceHistory[m]);
  159.             specDelay(1);
  160.             zobrazPotrava();
  161.             }
  162.         }
  163.         counter0++;
  164.         if(stlpecPotrava[l]==k && riadokPotrava[l]==j){
  165.          counter1++;
  166.          l++;
  167.          Serial.write(counter1+2);
  168.          counter0=0;
  169.          if(l>3){
  170.            l=0;
  171.           }
  172.         }
  173.         if(counter2==1){
  174.           for(int i=0;i<6;i++){
  175.             digitalWrite(riadky[i],HIGH);
  176.             digitalWrite(stlpce[i],LOW);
  177.           }
  178.           for(int i=0;i<4;i++){
  179.            pocetStlaceniX[i]=0;
  180.           }
  181.           for(int i=0;i<36;i++){
  182.            stlpceHistory[i]=0;
  183.            riadkyHistory[i]=0;
  184.           }
  185.            counter1=0;
  186.            counter0=0;
  187.            counter2=0;
  188.         }
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement