PButton vlongpress on release

This commit is contained in:
MichaelDvP
2021-03-04 16:06:18 +01:00
parent 856386f456
commit 173174fa87

View File

@@ -52,14 +52,12 @@ bool PButton::init(uint8_t pin, bool pullMode) {
pin_ = pin;
pullMode_ = pullMode; // 1=HIGH (pullup) 0=LOW (pulldown)
#if defined(ESP8266)
#if defined(ESP32)
pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT_PULLDOWN);
enabled_ = (digitalRead(pin_) != pullMode); // see if a button is connected
#else
// ESP32
pinMode(pin_, INPUT);
enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected
#else // esp8266 and standalone
pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT);
#endif
enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected
return enabled_;
}
@@ -144,6 +142,13 @@ bool PButton::check(void) {
longPressHappened_ = false;
}
// added code: raise OnLongPress event when only when the button is released
if (state_ == pullMode_ && vLongPressHappened_) {
resultEvent = 4;
vLongPressHappened_ = false;
longPressHappened_ = false;
}
// Test for hold
if (state_ != pullMode_ && (millisRes - downTime_) >= LongPressDelay_) {
// Trigger "normal" hold
@@ -159,9 +164,9 @@ bool PButton::check(void) {
// Trigger "long" hold
if ((millisRes - downTime_) >= VLongPressDelay_) {
if (vLongPressHappened_ == false) {
resultEvent = 4;
// resultEvent = 4;
vLongPressHappened_ = true;
// _longPressHappened = false;
// longPressHappened_ = false;
}
}
}