Difference between revisions of "IoT - Modular - Buttons.h"
(Created page with "class PushButton { public: PushButton(uint8_t pin) // Constructor (executes when a PushButton object is created) <nowiki>:</nowiki> pin(pin) { // remember the push button p...") |
|||
Line 1: | Line 1: | ||
+ | <syntaxhighlight lang="cpp" line="1"> | ||
class PushButton { | class PushButton { | ||
Line 60: | Line 61: | ||
// | // | ||
+ | <syntaxhighlight> |
Revision as of 00:01, 2 August 2021
<syntaxhighlight lang="cpp" line="1"> class PushButton {
public:
PushButton(uint8_t pin) // Constructor (executes when a PushButton object is created)
: pin(pin) { // remember the push button pin
pinMode(pin, INPUT_PULLUP); // enable the internal pull-up resistor
};
bool isPressed() // read the button state check if the button has been pressed, debounce the button as well
{
bool pressed = false;
bool state = digitalRead(pin); // read the button's state
int8_t stateChange = state - previousState; // calculate the state change since last time
if (stateChange == rising) { // If the button is pressed (went from high to low)
if (millis() - previousBounceTime > debounceTime) { // check if the time since the last bounce is higher than the threshold
pressed = true; // the button is pressed
}
}
if (stateChange == falling) { // if the button is released or bounces
previousBounceTime = millis(); // remember when this happened
}
previousState = state; // remember the current state
return pressed; // return true if the button was pressed and didn't bounce
};
private:
uint8_t pin;
bool previousState = HIGH;
unsigned long previousBounceTime = 0;
const static unsigned long debounceTime = 1000;
const static int8_t rising = HIGH - LOW;
const static int8_t falling = LOW - HIGH;
};
// <syntaxhighlight>