Итак, я кодирую кодировщик в Arduino, и я не уверен, какой тип кодирования я использую в своем коде. Мне также любопытно, как будет выглядеть кодировка X1, X2 и X4 в коде Arduino. Ниже приведен код, который я использовал.
#include <SoftwareSerial.h>
#define outputA 5 //channel A
#define outputB 6 //channel B
int counter = 0;
int degree = 0;
int aState;
int aLastState;
encoderPPR = 2048 //real ppr*2
void setup() {
pinMode (outputA, INPUT_PULLUP);
pinMode (outputB, INPUT_PULLUP);
Serial.begin(9600);
//Reads the initial state of the outputA
aLastState = digitalRead(outputA);
}
void loop(){
aState = digitalRead(outputA); //reads the 'current' state of the outputA
if (aState != aLastState) { //if there's a shift (perubahan)
if (digitalRead(outputB) != aState) {
counter ++;
} else {
counter --;
}
if (counter > encoderPPR or counter < -encoderPPR)
{
counter = 0;
}
}
derajat = counter * 360 / encoderPPR;
aLastState = aState;
}
}
Это код, который я использовал. Используется ли кодировка выше X2 или X4, потому что я сам не уверен. Спасибо.