Для проекта электронной гитары токарного станка требуется обработка сигналов нескольких датчиков - вращения шпинделя, вращения продольной подачи.


Энкодер подключается к Ардуино четырьмя проводами:
  • сигнал А - зеленый (D2 Arduino)
  • сигнал В - белый (D3 Arduino)
  • Vcc - красный (+5 вольт)
  • Vo  - черный (земля)
В скетче Ардуино сигнальные цепи подключаются на выводы с внешними прерываниями. В результате становится возможным программным путем  увеличить в четыре раза количество генерируемых энкодером импульсов - т.е. имея энкодер на 600 импульсов, в программе получаем 2400 вызовов обработчика прерываний

Нашел видео и код программы обработки


 
 
int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

void setup() {
  Serial.begin (9600);

  pinMode(encoderPin1, INPUT_PULLUP); 
  pinMode(encoderPin2, INPUT_PULLUP);

  digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
  digitalWrite(encoderPin2, HIGH); //turn pullup resistor on

  //call updateEncoder() when any high/low changed seen
  //on interrupt 0 (pin 2), or interrupt 1 (pin 3) 
  attachInterrupt(0, updateEncoder, CHANGE); 
  attachInterrupt(1, updateEncoder, CHANGE);

}

void loop(){ 
  //Do stuff here

  Serial.println(encoderValue);
  //delay(1000); //just here to slow down the output, and show it will work  even during a delay
}


void updateEncoder(){
  int MSB = digitalRead(encoderPin1); //MSB = most significant bit
  int LSB = digitalRead(encoderPin2); //LSB = least significant bit

  int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
  int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value

  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;

  lastEncoded = encoded; //store this value for next time
}
 
 
В случае маленького энкодера, ему нужны подтягивающие резисторы к +5В
Да еще в схеме указано подключение выводов к 8-му и 9-му контактам, а в программе соответственно ко 2-му и 3-му. Подключил как в программе и все заработало.
Мой маленький энкодер не клацает и дает на один оборот 100 кликов.