Mã:
boolean A, B, lastA, lastB;
attachInterrupt(1, doEncoder, CHANGE);
//2x Quadrature Encoder
void doEncoder()
{
  A = digitalRead(enocderPinA);
  B = digitalRead(encoderPinB);

  if ((A != lastA) & (B != lastB))
  {
    if (A ^ B) enc --;
    else       enc ++;
  }
  lastA = A;
  lastB = B;
}
Cái này thì trong quá trình test không thấy sai.. chỉ có điều tốc độ vẫn chậm hehe