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; }