Encoder Rotatorio

Hola, estaba probando un encoder rotatorio con una pantalla lcd i2c para hacer un menu mas profesional, pero no se porque la variable contador me cuenta de dos en dos y no encuentro la forma de evitarlo o compensarlo, a ver si alguien me puede ayudar.
Lo estaba probando en un arduino uno.

#define clk 8
#define data 9
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  //
  
int Contador = 100; 
int Estado;
int EstadoAnt;  
 
 void setup() { 
  pinMode (clk,INPUT);
  pinMode (data,INPUT);   
  Serial.begin (9600);
  EstadoAnt = digitalRead(clk);  
  lcd.init();  
  lcd.backlight();  
  lcd.setCursor(0, 0);
  lcd.print("Posicion");
 } 
 void loop() { 
   Estado = digitalRead(clk);
   if (Estado != EstadoAnt){    
     Serial.print("CLK: ");
     Serial.print(Estado);
     Serial.print("  DATA: ");
     Serial.print(digitalRead(data)); 
     if (digitalRead(data) != Estado) { 
       Contador --;
       Serial.print("  - ");
     } else {
       Contador ++;
       Serial.print("  + ");
     }
     Serial.print("  Position: ");
     Serial.println(Contador);
   }     
   lcd.setCursor(0, 1);
   lcd.print(Contador);
   EstadoAnt = Estado;
 }

Existe muchas librerias para el manejo de encoders que tiene muchos ejemplos.
Te dejo la página del Playground de Arduino con la info que debiste haber consultado antes. Link

gracias he buscado mil veces en google y no me ha salido esa web.

Como no? Solo debes buscar así en Google: Arduino encoder y sale

Mira el link

A mi me aparece 10mo.. lo anterior es propaganda por eso ya no uso mas Google y uso DuckDuckGo y adivina, sale segundo.