encodeur fix debounce

This commit is contained in:
Clement 2023-10-22 00:06:33 +02:00
parent 21294b7fbb
commit 743ca41758

View File

@ -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;