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

void setup()    
{      
  
pinMode(encoder0PinAINPUT);    
  
digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор   
  
pinMode(encoder0PinBINPUT);    
  
digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор  
  
pinMode(encoder1PinAINPUT);    
  
digitalWrite(encoder1PinAHIGH);    // подключить подтягивающий резистор   
  
pinMode(encoder1PinBINPUT);    
  
digitalWrite(encoder1PinBHIGH);    // подключить подтягивающий резистор 
   
  
attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2   
  
attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3   
  
Serial.begin (115200);   
}   

unsigned graydecode(unsigned gray)
{
 
unsigned bin;

 for (
bin 0graygray >>= 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.writebytes,2);  
      
bytes[0]=0;  
     } else if (
tmp_code == 1)
               {
                  
bytes[0]=9;
                 
bytes[1]=7;   
                  
Serial.writebytes,2);  
                  
bytes[0]=0
               }
  }
 
tmp_code code;
 
delay(2);
}   

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

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