zdenekpetrzd

Vačkový spínač - Serial

Feb 3rd, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.37 KB | None | 0 0
  1. //══════════════════════════════════════════════════════════════════════════════════════════════════════//
  2. //                                                               Vačkový spínač pro ovládání prvků lokomotivy                                                                    //
  3. // Funkce pro ovládání vačkových spínačů, má čtyři vstupní parametry : 1) První pin PISO registru, po kterém následuje (pocetPoloh) dalších, se spínači stavu                    //
  4. //                                                                     2) CVID - trojznak definovaný v programu TStoCOM                                                          //
  5. //                                                                     3) Počet poloh spínače                                                                                    //
  6. //                                                                     4) První poloha spínače, která se odešle do simulátoru                                                    //
  7. // Funkce posílá pomocí sériové linky hodnotu v zadaném rozsahu(prvniPoloha + pocetPoloh), násobitel je 1.                                                                       //
  8. //══════════════════════════════════════════════════════════════════════════════════════════════════════//
  9. int aktualStavPrepinace = 0;
  10. int staryStavPrepinace = 3;
  11. //══════════════════════════════════════════════════════════════════════════════════════════════════════//
  12. void SpinacVackovy(int pointer, String CVID, int pocetPoloh, int prvniPoloha) {
  13.   for (int i = pointer; i < (pointer + pocetPoloh); i++) {
  14.     bitWrite(aktualStavPrepinace, (i - pointer), tlacitko[i]);
  15.   }
  16.  
  17.   if(staryStavPrepinace != aktualStavPrepinace)
  18.   {
  19.     for(int i=0; i<pocetPoloh; i++) {
  20.       int mocnina = powint(2,i);
  21.       if(aktualStavPrepinace == mocnina) {
  22.          Serial.print(CVID);
  23.          Serial.print(i+prvniPoloha);
  24.          Serial.print("\r\n");
  25.       }
  26.     }
  27.     staryStavPrepinace = aktualStavPrepinace;
  28.   }
  29. }
  30.  
  31. //══════════════════════════════════════════════════════════════════════════════════════════════════════//
  32. int powint(int x, int y)
  33. {
  34.  int val=x;
  35.  for(int z=0;z<=y;z++)
  36.  {
  37.    if(z==0)
  38.      val=1;
  39.    else
  40.      val=val*x;
  41.  }
  42.  return val;
  43. }
  44. //══════════════════════════════════════════════════════════════════════════════════════════════════════//
Advertisement
Add Comment
Please, Sign In to add comment