byte first , second; // kierunek zmiany pinów
boolean click , stateChang; // umieszczenie kliknięcia i zmiany stanu w zmiennych
void setup() {
  pinMode(2 , INPUT); // przycisk dekodera w dół
  pinMode(3 , INPUT); // przycisk dekodera w górę
  pinMode(11 , OUTPUT); pinMode(10 , OUTPUT); // wyjścia dekodera
  digitalWrite(2 , HIGH); digitalWrite(3 , HIGH);  // wejścia rezystorów podwyższających
  digitalWrite(10 , HIGH); // stan początkowy 
  digitalWrite(11 , LOW);
  stateChang = true;
} // koniec void setup()
void loop() { 
  if (digitalRead(2) == 0 ){ // w dół
    first = 10; second = 11; // zapis na pinie 10, następnie na 11 dla kierunku w dół
    click = true;
  } 
  if (digitalRead(3) == 0 ){ // w górę
    first = 11; second = 10; // zapis na pinie 11, następnie na 10 dla kierunku w górę
    click  = true;
  }
  if (click == true ) {  // wysłanie 1/2 impulsu, gdy naciśnięty jest przycisk
  stateChang = !stateChang; // zmiana stanu do zapisu
  digitalWrite(first, stateChang); // zmiana 1. pinu
  delay (2); // opóźnienie przed zmianą następnego pinu
  digitalWrite(second , stateChang); // zmiana 2. pinu 
  delay (2); // opóźnienie przed zmianą następnego pinu przy największej prędkości
  click = false ; // reset
  }
   delay (100); // spowolnienie kodu = wolniejsza praca dekodera
} // koniec void loop()
