update debounce
This commit is contained in:
parent
f0aa1b8d8e
commit
0713974488
|
@ -12,6 +12,6 @@
|
|||
platform = espressif32
|
||||
board = wt32-eth01
|
||||
framework = arduino
|
||||
lib_deps = siwats/ESPMegaPROR3@^2.9.0
|
||||
lib_deps = siwats/ESPMegaPROR3@^2.9.3
|
||||
monitor_speed = 115200
|
||||
build_flags = -DCORE_DEBUG_LEVEL=0 -DSW_VERSION='"cudgym-1.0.0"' -DBOARD_MODEL='"ESPMegaPRO R3.3c"'
|
|
@ -19,6 +19,8 @@ void Button::begin()
|
|||
{
|
||||
auto bindedCallback = std::bind(&Button::buttonChangedCallback, this, std::placeholders::_1, std::placeholders::_2);
|
||||
this->input_handler_id = this->inputCard->registerCallback(bindedCallback);
|
||||
// Disable Hardware Debounce
|
||||
this->inputCard->setDebounceTime(this->inputPin, 0);
|
||||
}
|
||||
|
||||
void Button::setMinLongPressTime(uint32_t time)
|
||||
|
@ -68,7 +70,7 @@ void Button::buttonChangedCallback(uint8_t pin, uint8_t value)
|
|||
void Button::loop()
|
||||
{
|
||||
if (this->buttonState) {
|
||||
if (millis() - this->pressedTime > this->longPressTime) {
|
||||
if (millis() - this->pressedTime > this->longPressTime && !this->longPressTriggered) {
|
||||
if (this->longPressCallback) {
|
||||
this->longPressCallback();
|
||||
this->longPressTriggered = true;
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
/***********************************************
|
||||
* Pin Definitions *
|
||||
***********************************************/
|
||||
|
||||
// Buttons
|
||||
#define RIGHT_ON_BUTTON_PIN 0
|
||||
#define RIGHT_OFF_BUTTON_PIN 1
|
||||
#define LEFT_ON_BUTTON_PIN 2
|
||||
|
@ -10,25 +12,23 @@
|
|||
#define BUTTON_SHORT_PRESS_TIME_MS 75
|
||||
#define BUTTON_LONG_PRESS_TIME_MS 600
|
||||
|
||||
#define FAN1_BUTTON_PIN 4
|
||||
#define FAN2_BUTTON_PIN 5
|
||||
#define FAN3_BUTTON_PIN 6
|
||||
#define FAN4_BUTTON_PIN 7
|
||||
#define FAN5_BUTTON_PIN 8
|
||||
#define PUMP_BUTTON_PIN 9
|
||||
#define STADIUM_RIGHT_BUTTON_PIN 10
|
||||
#define STADIUM_LEFT_BUTTON_PIN 11
|
||||
// Switches
|
||||
#define RIGHT_STADIUM_LIGHT_SWITCH_PIN 4
|
||||
#define LEFT_STADIUM_LIGHT_SWITCH_PIN 5
|
||||
#define GIRLS_TOILET_LIGHT_SWITCH_PIN 6
|
||||
#define BOYS_TOILET_LIGHT_SWITCH_PIN 7
|
||||
#define SWITCH_DEBOUNCE_TIME_MS 75
|
||||
|
||||
// Output Pins
|
||||
#define RIGHT_LIGHT_RELAY_PIN 0
|
||||
#define LEFT_LIGHT_RELAY_PIN 1
|
||||
#define FAN1_RELAY_PIN 2
|
||||
#define FAN2_RELAY_PIN 3
|
||||
#define FAN3_RELAY_PIN 4
|
||||
#define FAN4_RELAY_PIN 5
|
||||
#define FAN5_RELAY_PIN 6
|
||||
#define PUMP_RELAY_PIN 7
|
||||
#define STADIUM_RIGHT_LIGHT_RELAY_PIN 8
|
||||
#define STADIUM_LEFT_LIGHT_RELAY_PIN 9
|
||||
#define RIGHT_STADIUM_LIGHT_RELAY_PIN 2
|
||||
#define LEFT_STADIUM_LIGHT_RELAY_PIN 3
|
||||
#define RIGHT_FAN_RELAY_PIN 4
|
||||
#define LEFT_FAN_RELAY_PIN 5
|
||||
#define GIRLS_TOILET_LIGHT_RELAY_PIN 6
|
||||
#define BOYS_TOILET_LIGHT_RELAY_PIN 7
|
||||
|
||||
|
||||
/***********************************************
|
||||
* Display Configuration *
|
||||
|
|
76
src/main.cpp
76
src/main.cpp
|
@ -26,6 +26,11 @@ void setup()
|
|||
// Initialize the ESPMegaPRO
|
||||
ESP_LOGV("CUD IoT OS", "Initializing ESPMegaPRO");
|
||||
espmega.begin();
|
||||
espmega.inputs.preloadInputBuffer();
|
||||
espmega.inputs.setDebounceTime(RIGHT_STADIUM_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS);
|
||||
espmega.inputs.setDebounceTime(LEFT_STADIUM_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS);
|
||||
espmega.inputs.setDebounceTime(GIRLS_TOILET_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS);
|
||||
espmega.inputs.setDebounceTime(BOYS_TOILET_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS);
|
||||
// Initialize IoT Modules
|
||||
ESP_LOGV("CUD IoT OS", "Initializing IoT Modules");
|
||||
espmega.setTimezone("ICT-7");
|
||||
|
@ -74,14 +79,12 @@ void button_init()
|
|||
rightOnButton.setShortPressCallback([]()
|
||||
{
|
||||
// Turn on right light
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH);
|
||||
});
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH); });
|
||||
rightOnButton.setLongPressCallback([]()
|
||||
{
|
||||
// Turn on both lights
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH);
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); });
|
||||
rightOnButton.begin();
|
||||
|
||||
// Right Off Button
|
||||
|
@ -90,14 +93,12 @@ void button_init()
|
|||
rightOffButton.setShortPressCallback([]()
|
||||
{
|
||||
// Turn off right light
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW);
|
||||
});
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW); });
|
||||
rightOffButton.setLongPressCallback([]()
|
||||
{
|
||||
// Turn off both lights
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW);
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); });
|
||||
rightOffButton.begin();
|
||||
|
||||
// Left On Button
|
||||
|
@ -106,14 +107,12 @@ void button_init()
|
|||
leftOnButton.setShortPressCallback([]()
|
||||
{
|
||||
// Turn on left light
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); });
|
||||
leftOnButton.setLongPressCallback([]()
|
||||
{
|
||||
// Turn on both lights
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH);
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); });
|
||||
leftOnButton.begin();
|
||||
|
||||
// Left Off Button
|
||||
|
@ -122,14 +121,12 @@ void button_init()
|
|||
leftOffButton.setShortPressCallback([]()
|
||||
{
|
||||
// Turn off left light
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); });
|
||||
leftOffButton.setLongPressCallback([]()
|
||||
{
|
||||
// Turn off both lights
|
||||
espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW);
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW);
|
||||
});
|
||||
espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); });
|
||||
leftOffButton.begin();
|
||||
}
|
||||
|
||||
|
@ -140,21 +137,6 @@ void loop()
|
|||
rightOnButton.loop();
|
||||
rightOffButton.loop();
|
||||
espmega.loop();
|
||||
|
||||
// If pump is on and all fans are off, turn off pump
|
||||
// Because pump pumps water to the radiator in front of the fans
|
||||
// Without the fans, no cooling effect will be achieved
|
||||
if (espmega.outputs.getState(PUMP_RELAY_PIN) == HIGH)
|
||||
{
|
||||
if (espmega.outputs.getState(FAN1_RELAY_PIN) == LOW &&
|
||||
espmega.outputs.getState(FAN2_RELAY_PIN) == LOW &&
|
||||
espmega.outputs.getState(FAN3_RELAY_PIN) == LOW &&
|
||||
espmega.outputs.getState(FAN4_RELAY_PIN) == LOW &&
|
||||
espmega.outputs.getState(FAN5_RELAY_PIN) == LOW)
|
||||
{
|
||||
espmega.outputs.digitalWrite(PUMP_RELAY_PIN, LOW);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void send_stop_bytes(HardwareSerial &uart)
|
||||
|
@ -168,29 +150,21 @@ void handle_input_change(uint8_t pin, bool state)
|
|||
{
|
||||
switch (pin)
|
||||
{
|
||||
case FAN1_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(FAN1_RELAY_PIN, !espmega.outputs.getState(FAN1_RELAY_PIN));
|
||||
case RIGHT_STADIUM_LIGHT_SWITCH_PIN:
|
||||
espmega.outputs.digitalWrite(RIGHT_STADIUM_LIGHT_RELAY_PIN,
|
||||
!espmega.outputs.getState(RIGHT_STADIUM_LIGHT_RELAY_PIN));
|
||||
break;
|
||||
case FAN2_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(FAN2_RELAY_PIN, !espmega.outputs.getState(FAN2_RELAY_PIN));
|
||||
case LEFT_STADIUM_LIGHT_SWITCH_PIN:
|
||||
espmega.outputs.digitalWrite(LEFT_STADIUM_LIGHT_RELAY_PIN,
|
||||
!espmega.outputs.getState(LEFT_STADIUM_LIGHT_RELAY_PIN));
|
||||
break;
|
||||
case FAN3_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(FAN3_RELAY_PIN, !espmega.outputs.getState(FAN3_RELAY_PIN));
|
||||
case GIRLS_TOILET_LIGHT_SWITCH_PIN:
|
||||
espmega.outputs.digitalWrite(GIRLS_TOILET_LIGHT_RELAY_PIN,
|
||||
!espmega.outputs.getState(GIRLS_TOILET_LIGHT_RELAY_PIN));
|
||||
break;
|
||||
case FAN4_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(FAN4_RELAY_PIN, !espmega.outputs.getState(FAN4_RELAY_PIN));
|
||||
break;
|
||||
case FAN5_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(FAN5_RELAY_PIN, !espmega.outputs.getState(FAN5_RELAY_PIN));
|
||||
break;
|
||||
case PUMP_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(PUMP_RELAY_PIN, !espmega.outputs.getState(FAN5_RELAY_PIN));
|
||||
break;
|
||||
case STADIUM_RIGHT_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(STADIUM_RIGHT_LIGHT_RELAY_PIN, !espmega.outputs.getState(STADIUM_RIGHT_LIGHT_RELAY_PIN));
|
||||
break;
|
||||
case STADIUM_LEFT_BUTTON_PIN:
|
||||
espmega.outputs.digitalWrite(STADIUM_LEFT_LIGHT_RELAY_PIN, !espmega.outputs.getState(STADIUM_LEFT_LIGHT_RELAY_PIN));
|
||||
case BOYS_TOILET_LIGHT_SWITCH_PIN:
|
||||
espmega.outputs.digitalWrite(BOYS_TOILET_LIGHT_RELAY_PIN,
|
||||
!espmega.outputs.getState(BOYS_TOILET_LIGHT_RELAY_PIN));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue