13 void Button::invert() { invertState =
true; }
15 #ifndef AH_INDIVIDUAL_BUTTON_INVERT
16 bool Button::invertState =
false;
22 bool prevState = debouncedState & 0b01;
23 unsigned long now = millis();
24 if (now - prevBounceTime > debounceTime) {
25 debouncedState = static_cast<State>((prevState << 1) | input);
27 debouncedState = static_cast<State>((prevState << 1) | prevState);
29 if (input != prevInput) {
33 return debouncedState;
40 case Button::Pressed:
return F(
"Pressed");
41 case Button::Released:
return F(
"Released");
42 case Button::Falling:
return F(
"Falling");
43 case Button::Rising:
return F(
"Rising");
44 default:
return F(
"<invalid>");
48 unsigned long Button::previousBounceTime()
const {
return prevBounceTime; }
50 unsigned long Button::stableTime(
unsigned long now)
const {
51 return now - previousBounceTime();
54 unsigned long Button::stableTime()
const {
return stableTime(millis()); }
56 void Button::setDebounceTime(
unsigned long debounceTime) {
57 Button::debounceTime = debounceTime;
60 unsigned long Button::getDebounceTime() {
return Button::debounceTime; }