From 743ca41758d9758ee6b6c129ae2d1d283ad54519 Mon Sep 17 00:00:00 2001 From: Clement Date: Sun, 22 Oct 2023 00:06:33 +0200 Subject: [PATCH] encodeur fix debounce --- lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp b/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp index 23d6709..2b0edd4 100644 --- a/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp +++ b/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp @@ -1,8 +1,13 @@ #include "../include/SwitchableEncodeur.h" IRAM_ATTR void switchEncoder() { - SwitchableEncodeur::getInstance()->addMenu(); - delay(200); + static unsigned long last_interrupt_time = 0; + unsigned long interrupt_time = millis(); + // If interrupts come faster than 200ms, assume it's a bounce and ignore + if (interrupt_time - last_interrupt_time > 200){ + SwitchableEncodeur::getInstance()->addMenu(); + } + last_interrupt_time = interrupt_time; } SwitchableEncodeur* SwitchableEncodeur::instance = nullptr; @@ -43,6 +48,9 @@ bool SwitchableEncodeur::update() { if (newPosition != this->oldPosition || this->menu != this->oldMenu) { this->oldMenu = this->menu; this->oldPosition = newPosition; + if(this->oldPosition < 0){ + this->oldPosition = 0; + } sortie = true; } return sortie;