Все гораздо сложнее, изучайте Код Грея
энкодера под рукой нет , так что код проверить не могу.
	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;   
}