Optimized encoder part a little more

This commit is contained in:
Oleksiy
2025-04-08 22:22:37 +03:00
parent 29c187bd01
commit 6cbf8b7c0b

View File

@ -217,9 +217,9 @@ int8_t encoderChange = 0;
uint8_t encoderBurstCount = 0;
void checkEncoderStatus() {
bool pin1Status = digitalRead(ENC_D1_PIN);
bool pin2Status = digitalRead(ENC_D2_PIN);
uint8_t newStatus = (pin1Status << 1) | pin2Status;
//bool pin1Status = digitalRead(ENC_D1_PIN);
//bool pin2Status = digitalRead(ENC_D2_PIN);
uint8_t newStatus = (digitalRead(ENC_D1_PIN) << 1) | digitalRead(ENC_D2_PIN);
switch(encoderStatus) { // encoderStatus & 0b00000011 - to check only 2 last bits
case 0b00:
if (newStatus == 0b01) {
@ -250,9 +250,7 @@ void checkEncoderStatus() {
}
break;
}
//encoderStatus = (encoderStatus << 2); //previous status is now stored in bits 2 and 3
encoderStatus = bitWrite(encoderStatus, 1, pin1Status);
encoderStatus = bitWrite(encoderStatus, 0, pin2Status); //This can probably be more optimizied with bit logic
encoderStatus = newStatus;
uint32_t currentTime = millis();
encoderTimeBetweenPulses = currentTime - encoderCheckTime;