From 5b66d34d582c7064d0e57a56a90d16ec188fb927 Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Sun, 7 Jul 2024 11:51:51 +0700 Subject: [PATCH] implement invert --- src/button.cpp | 5 ++++- src/button.hpp | 3 ++- src/main.cpp | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/button.cpp b/src/button.cpp index 5f92f11..c1100c1 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -1,12 +1,13 @@ #include "button.hpp" -Button::Button(DigitalInputCard *inputCard, uint8_t inputPin) +Button::Button(DigitalInputCard *inputCard, uint8_t inputPin, bool invert) { this->inputCard = inputCard; this->inputPin = inputPin; this->input_handler_id = -1; // initialize to MAX_UINT16 this->shortPressTime = 100; // default short press time this->longPressTime = 2000; // default long press time + this->invert = invert; } Button::~Button() @@ -48,6 +49,8 @@ void Button::buttonChangedCallback(uint8_t pin, uint8_t value) if (pin != this->inputPin) return; + value = this->invert ? !value : value; + if (value) { // button pressed this->buttonState = true; diff --git a/src/button.hpp b/src/button.hpp index 2799f90..3e1d156 100644 --- a/src/button.hpp +++ b/src/button.hpp @@ -2,7 +2,7 @@ class Button { public: - Button(DigitalInputCard* inputCard, uint8_t inputPin); + Button(DigitalInputCard* inputCard, uint8_t inputPin, bool invert = false); ~Button(); void setMinLongPressTime(uint32_t time); void setMinShortPressTime(uint32_t time); @@ -19,6 +19,7 @@ class Button { std::function longPressCallback; std::function shortPressCallback; uint32_t pressedTime; + bool invert; bool buttonState; bool longPressTriggered; void buttonChangedCallback(uint8_t pin, uint8_t value); diff --git a/src/main.cpp b/src/main.cpp index 8398ba2..9620974 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,9 +5,9 @@ ESPMegaPRO espmega = ESPMegaPRO(); ESPMegaDisplayOTA internalDisplayOTA = ESPMegaDisplayOTA(); Button rightOnButton(&espmega.inputs, RIGHT_ON_BUTTON_PIN); -Button rightOffButton(&espmega.inputs, RIGHT_OFF_BUTTON_PIN); +Button rightOffButton(&espmega.inputs, RIGHT_OFF_BUTTON_PIN, true); Button leftOnButton(&espmega.inputs, LEFT_ON_BUTTON_PIN); -Button leftOffButton(&espmega.inputs, LEFT_OFF_BUTTON_PIN); +Button leftOffButton(&espmega.inputs, LEFT_OFF_BUTTON_PIN, true); SmartVariable toiletLightsLock; SmartVariable gymLightsLock;