lettura encoder, si muove di 4 unita per singolo step

Ciao a tutti, da poco mi sono messo alle prese con un encoder, che comprai parecchio tempo fa.
Vorrei leggerlo e contare i suoi movimenti per poi scriverli su lcd.
Per leggere in quadratura l'encoder mi sono affidato alla libreria: Encoder Library, for Measuring Quadarature Encoded Position or Rotation Signals
Ho cambiato i pin (3, 2) perche uso arduino uno, se non ho letto male gli unici pin interrupt di arduino uno sono i digitali 2 e 3.
Diciamo che sommariamente funziona tutto, il problema è che per ogni "step" dell'encoder il valore visualizzato si muove di 4 unità e quando i numeri aumentano, esempio, sulle centinaia in alcuni punti l'encoder sempre muovendosi di un solo step muove addirittura le decine.
Le idee che mi vengono in mente sono:
aggiungere una funzione: lcd.clear() prima di ogni scrittura su lcd in modo tale da avere sempre un dato pulito
modificare lcd.print (newPosition); in lcd.print (newPosition/4); però rimane sempre il mistero dello step che vale 4 unita...

qualcuno gentilmente mi sa aiutare?
grazie
Max

newPosition nella libreria è definito come il valore attuale dell'encoder
lo sketch e questo:

#include <Encoder.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 6, 7);

Encoder myEnc(2, 3);

void setup() {
 lcd.begin (20,4);
 lcd.setCursor (0,0);
 lcd.print ("encoder A");
}

long oldPosition  = -999;

void loop() {
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    lcd.setCursor (10,0);
    lcd.print (newPosition);
  }
}

memedesimo:
però rimane sempre il mistero dello step che vale 4 unita...

Nessun mistero. E' il normale funzionamento di quella libreria.
E' spiegato anche nella pagina da te linkata.
--> Encoder Library, for Measuring Quadarature Encoded Position or Rotation Signals