Rotary encoder kullanımı

Acaba rotary encoderi Arduino ile nasıl kullanabilirim? Kütüphane gerekir mi?

Merhabalar,
Yanlış bilmiyorsam kütüphane gerekmeden kullanılabiliyor. Örnek verirsek şemadaki ve kodları uygularsanız serial ekranda sayaç başlıyacaktır. Kolay gelsin. :slightly_smiling_face:
image

const int PinCLK = 2;
const int PinDT = 3; 
const int PinSW = 4; 
int sayac = 0;
int durum;
int sondurum;

void setup() {
   pinMode(PinCLK,INPUT);
   pinMode(PinDT,INPUT);  
   pinMode(PinSW,INPUT);
   Serial.begin (9600);
   sondurum = digitalRead(PinCLK);
}

void loop() {
  if (digitalRead(PinSW)==LOW)
  {
    sayac =0;
    Serial.print("Sayac: ");
    Serial.println(sayac);
 }
  durum = digitalRead(PinCLK);
  if (durum != sondurum){
    if (digitalRead(PinDT) !=durum)    {
      sayac ++;
    } else {
      sayac --;
    }
    Serial.print("Sayac: ");
    Serial.println(sayac);
  }
  sondurum = durum;
  
}

merhabalar kod çalışmıyor, sadece -1, 0 ve 1 sayılarını görebiliyorum. Yani şu şekilde:

Sayac: -1
Sayac: 0
Sayac: 1
Sayac: 0
Sayac: 0
Sayac: -1
Sayac: 0
Sayac: 0
Sayac: -1
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 0
Sayac: 1
Sayac: 0
Sayac: 0
Sayac: 1
Sayac: 2
Sayac: 0
Sayac: 1
Sayac: 0
Sayac: 1
Sayac: 0
Sayac: 1