encoder rotativo recuperato da mouse

no. pariamo da 0 e dal codice encoder rotativo recuperato da mouse - #6 by niki77 - Generale - Arduino Forum
consideriamo pin1 come l'interrupt, ma RISING (al contrario del tuo codice che è a CHANGE)

giriamo in senso orario: quando hai una condizione di RISING (quindi il pin1 diventa da 0 a 1) se facessi una lettura istantanea dello stato pin leggeresti il pin2 SEMPRE a 0.
con una digitalRead, vedresti sempre 0 a basse velocità, e 1 ad alte velocità. ma non è questo che ci interessa (anzi costituisce un problema)
prendiamo il caso ideale (lettura istantanea o quasi), e quindi le due letture non saranno mai 1 e 1, e quindi non succede nulla

In senso antiorario avresti il contrario: leggeresti sempre 1 e 1.

ora, stessa situazione ma interrupt a CHANGE, lettura istantanea (o quasi)
in senso orario leggeresti 1,0 (quando sale) e 0,1 (quando scende) (quindi non viene fatta nessuna lettura valida)
in senso antiorario avresti 1,1 (quando sale) e 0,0 (quando scende) (lettura valida solo in salita)