Contacts debounce assistant for stable operation of buttons and other hardware triggers.
- works with buttons on GND or Vdd connect
- time tracking of button's states
- can check button's state directly or with callback function
- can button update from main loop or with hardware interrupt
- compatible with Arduino and some many other platforms
- Create instance like:
ChatterButton button(CButtonWire::GND);
- Set handler if needed:
button.setHandler(buttonState);
handler:
void buttonState(bool active) {
digitalWrite(LED_BUILTIN, active);
Serial.println("Previous state duration: " + String(button.getPreviousStateDuration()) +" ms");
Serial.println("<method A> button " + String(active ? "pressed" : "released"));
}
- Organize update button state in runloop:
void loop() {
button.update(digitalRead(BUTTON_PIN));
}
- Bingo!
You can check button state in hadler function or direct button poll:
if (button.didChange()) {
Serial.println("String(button ? "pressed" : "released"));
}
-
Select button's connection closed on GND or Vdd (positive) also it use to correct connect inverted (normal close) button in constructor
ChatterButton(CButtonWire) // CButtonWire has ::GND and ::Vdd options
-
Request current button state from instance; true - active; once call will reset 'didChange()' flag
if (button) { /*do something*/ }
-
Once check button state change; will reset after call 'operator bool()'
if (button.didChange()) {...}
-
Force set button state; didChange() doesn't triggered; (use for forced init etc)
button.set(bool state);
-
Request duration of current button state; milliseconds
button.getStateDuration();
-
Request duration of previous button state; milliseconds
button.getPreviousStateDuration();
The MIT License (MIT) Copyright (c) 2022 0xdeb 0xdeb@mail.ru