Все гораздо сложнее, изучайте Код Грея
энкодера под рукой нет , так что код проверить не могу.
PHP код:
#define encoder0PinA  2   
#define encoder0PinB  3  
#define encoder1PinA  4 
#define encoder1PinB  5
byte bytes[2]={0,7} ;    

void setup()    
{      
  
pinMode(encoder0PinA, INPUT);    
  
digitalWrite(encoder0PinA, HIGH);     // подключить подтягивающий резистор   
  
pinMode(encoder0PinB, INPUT);    
  
digitalWrite(encoder0PinB, HIGH);    // подключить подтягивающий резистор  
  
pinMode(encoder1PinA, INPUT);    
  
digitalWrite(encoder1PinA, HIGH);    // подключить подтягивающий резистор   
  
pinMode(encoder1PinB, INPUT);    
  
digitalWrite(encoder1PinB, HIGH);    // подключить подтягивающий резистор 
   
  
attachInterrupt(0, doEncoderA, FALLING);  // настроить прерывание interrupt 0 на pin 2   
  
attachInterrupt(1, doEncoderB, FALLING);  // настроить прерывание interrupt 0 на pin 3   
  
Serial.begin (115200);   
}   

unsigned graydecode(unsigned gray)
{
 
unsigned bin;

 for (
bin = 0; gray; gray >>= 1)
    
bin ^= gray;

 return 
bin;
}

void loop()   
{     
 static 
uint8_t tmp_code = 0; 
 
uint8_t gray_code = digitalRead(encoder1PinA) | (digitalRead(encoder1PinB) << 1),
  
code = graydecode(gray_code);
 if (
code == 0)
 {
   if (
tmp_code == 3)
     {
       
bytes[0]=8;
       
bytes[1]=7;   
      
Serial.write( bytes,2);  
      
bytes[0]=0;  
     } else if (
tmp_code == 1)
               {
                  
bytes[0]=9;
                 
bytes[1]=7;   
                  
Serial.write( bytes,2);  
                  
bytes[0]=0; 
               }
  }
 
tmp_code = code;
 
delay(2);
}   

// обработка прерывания   
void doEncoderA()   
{   
  if(
digitalRead(encoder0PinB)==HIGH){bytes[0]=25;}else{bytes[0]=5;}    
  
Serial.write( bytes,2);  
  
bytes[0]=0; 
}     

// обработка прерывания   
void doEncoderB()   
{   
    if(
digitalRead(encoder0PinA)==HIGH){bytes[0]=5;}else{bytes[0]=25;}   
    
Serial.write( bytes,2);  
    
bytes[0]=0;   
}