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; pin_ = pin;
pullMode_ = pullMode; // 1=HIGH (pullup) 0=LOW (pulldown) pullMode_ = pullMode; // 1=HIGH (pullup) 0=LOW (pulldown)
#if defined(ESP8266) #if defined(ESP32)
pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT_PULLDOWN); pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT_PULLDOWN);
enabled_ = (digitalRead(pin_) != pullMode); // see if a button is connected #else // esp8266 and standalone
#else pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT);
// ESP32
pinMode(pin_, INPUT);
enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected
#endif #endif
enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected
return enabled_; return enabled_;
} }
@@ -144,6 +142,13 @@ bool PButton::check(void) {
longPressHappened_ = false; 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 // Test for hold
if (state_ != pullMode_ && (millisRes - downTime_) >= LongPressDelay_) { if (state_ != pullMode_ && (millisRes - downTime_) >= LongPressDelay_) {
// Trigger "normal" hold // Trigger "normal" hold
@@ -159,9 +164,9 @@ bool PButton::check(void) {
// Trigger "long" hold // Trigger "long" hold
if ((millisRes - downTime_) >= VLongPressDelay_) { if ((millisRes - downTime_) >= VLongPressDelay_) {
if (vLongPressHappened_ == false) { if (vLongPressHappened_ == false) {
resultEvent = 4; // resultEvent = 4;
vLongPressHappened_ = true; vLongPressHappened_ = true;
// _longPressHappened = false; // longPressHappened_ = false;
} }
} }
} }