Non capisco proprio il tuo programma...Attacchi un interrupt al pin 2:
attachInterrupt(0, doEncoderA, CHANGE);
e poi all'interno della relativa ISR controlli lo stato dello stesso pin con un check che non capisco...
void doEncoderA(){ // interrupt 0 function
if (digitalRead(2) == HIGH) { // look for a low-to-high on channel A