Encoder impreciso

Salve, scusate se disturbo ancora ma questo problema non riesco a risolverlo, in pratica faccio girare il motorino in senso orario capita guardando nel monitor seriale che l'encoder rileva una rotazione in senso antiorario, nello sketch ho impostato l' "EncoderDistance" come incremento quindi lui incrementando mi dice la distanza in cui si trova, mentre il comando stateEncoder mi dice la direzione con 1 e -1, 1 come rotazione oraria e -1 come antioraria.

void setup() {

  pinMode        ( OutA, INPUT ) ;  
  pinMode        ( OutB, INPUT ) ;    

  digitalWrite   ( OutA, HIGH  ) ;
  digitalWrite   ( OutB, HIGH  ) ;

  Serial.begin   (  250000     ) ;
  Serial.println (  "Start!!"  ) ;
  Serial.println (  "Start!!"  ) ;
  Serial.println (  "Start!!"  ) ;

  attachInterrupt (0, Encoder, FALLING );

}

void loop() {
  Serial.print   (       " Encoder :"       ) ;
  Serial.print   (   " Stato logico - ( "   ) ;
  Serial.print   (       StateEncoder       ) ;
  Serial.print   (    " ) Distanza - ( "    ) ; 
  Serial.print   (      EncoderDistance     ) ;
  Serial.println (           " ) "          ) ;
}


void Encoder() {
  
    
  if (digitalRead(OutA) == digitalRead(OutB))
  {
  StateEncoder = 1  ;
  EncoderDistance++ ; 
  }
  else
  {
  StateEncoder = -1 ;
  EncoderDistance-- ; 
  }

}

Non penso che derivi da un problema dello sketch perchè ne ho provati molti sul web, sembrerebbe piuttosto l'encoder, volevo chiedere consiglio a voi in tal caso per capire il problema e se c'è qualche possibilità per risolverlo.

Grazie.

come hai dichiarato "EncoderDistance" ?

si scusa non pensavo servisse, comunque ho usato il comando long per evitare che passasse da 33000 a -33000

il codice: (non sono riuscito a trovare il comando code, scusa)

int OutA = 3, OutB = 2; //Segnale Encoder

int StateEncoder = 0 ;
long EncoderDistance = 0 ;

il tag code è rappresentato da </>
o manualmente [ C o d e ] mio codice [/ C o d e ]
Senza spazi.

Quando usi variabili globali dentro agli interrupt metti volatile.

volatile int   StateEncoder    = 0 ;
volatile long  EncoderDistance = 0 ;

come funziona quel tipo di encoder?

questo è il link dove l'ho acquistato, comunque posto le foto con lo schema e i componenti

io uso i 3 denti

Ma che c'entra "il meteo"????

Éra un video che ho fatto col telefono, l'app che uso per vedere i video quando stoppo fa la pubblicità, quello é uno screenshot