Skip to content

Commit

Permalink
Multiple analog button fix for #3549
Browse files Browse the repository at this point in the history
  • Loading branch information
blazoncek committed Feb 10, 2024
1 parent 3d6f25a commit 4457067
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions wled00/button.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,11 @@ void handleAnalog(uint8_t b)

void handleButton()
{
static unsigned long lastRead = 0UL;
static unsigned long lastAnalogRead = 0UL;
static unsigned long lastRun = 0UL;
unsigned long now = millis();

if (strip.isUpdating() && (now - lastRun < 400)) return; // don't interfere with strip update (unless strip is updating continuously, e.g. very long strips)
if (strip.isUpdating() && (now - lastRun < ANALOG_BTN_READ_CYCLE+1)) return; // don't interfere with strip update (unless strip is updating continuously, e.g. very long strips)
lastRun = now;

for (uint8_t b=0; b<WLED_MAX_BUTTONS; b++) {
Expand All @@ -243,9 +243,8 @@ void handleButton()
if (usermods.handleButton(b)) continue; // did usermod handle buttons

if (buttonType[b] == BTN_TYPE_ANALOG || buttonType[b] == BTN_TYPE_ANALOG_INVERTED) { // button is not a button but a potentiometer
if (now - lastRead > ANALOG_BTN_READ_CYCLE) {
if (now - lastAnalogRead > ANALOG_BTN_READ_CYCLE) {
handleAnalog(b);
lastRead = now;
}
continue;
}
Expand Down Expand Up @@ -325,6 +324,9 @@ void handleButton()
shortPressAction(b);
}
}
if (now - lastAnalogRead > ANALOG_BTN_READ_CYCLE) {
lastAnalogRead = now;
}
}

// If enabled, RMT idle level is set to HIGH when off
Expand Down

0 comments on commit 4457067

Please sign in to comment.