From 4a6a1a18490249177711148d7d1776cf08509f23 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Wed, 7 Jan 2026 22:44:24 +0100 Subject: [PATCH] fix encoder --- .vscode/.server-controller-port.log | 5 +++++ src/main.cpp | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 .vscode/.server-controller-port.log diff --git a/.vscode/.server-controller-port.log b/.vscode/.server-controller-port.log new file mode 100644 index 0000000..05d9a08 --- /dev/null +++ b/.vscode/.server-controller-port.log @@ -0,0 +1,5 @@ +{ + "port": 9145, + "time": 1767822324423, + "version": "0.0.3" +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index de1cfac..6ce1f4e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4010,22 +4010,24 @@ void Seek(bool mode) { void read_encoder() { if (!digitalRead(ROTARY_PIN_A) || !digitalRead(ROTARY_PIN_B)) { - if (millis() - rotarytimer >= 15) { - rotarycounteraccelerator = 2; // Steady fast + uint32_t dt = millis() - rotarytimer; + if (dt >= 45) { + rotarycounteraccelerator = 6; rotarycounter = 0; - } else if (millis() - rotarytimer >= 30) { + } else if (dt >= 30) { rotarycounteraccelerator = 4; rotarycounter = 0; - } else if (millis() - rotarytimer >= 45) { - rotarycounteraccelerator = 6; // Quick flicks + } else if (dt >= 15) { + rotarycounteraccelerator = 2; rotarycounter = 0; } } - static uint8_t old_AB = 3 << 2; + static uint8_t old_AB = 3; static int8_t encval = 0; static const int8_t enc_states[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0}; + old_AB <<= 2; if (digitalRead(ROTARY_PIN_A)) old_AB |= 0x02; if (digitalRead(ROTARY_PIN_B)) old_AB |= 0x01; encval += enc_states[( old_AB & 0x0f )];