Control Surface main
MIDI Control Surface library for Arduino
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Attributes | List of all members
IncrementDecrementButtons Class Reference

#include <AH/Hardware/IncrementDecrementButtons.hpp>

Detailed Description

A class for buttons that increment and decrement some counter or setting.

It behaves the same way as a computer keyboard: when you press the increment (decrement) button, it increments (decrements) the counter once. If you keep on pressing it for longer than a certain threshold, it keeps on incrementing (decrementing) at a faster rate, until you release it.
If both the increment and the decrement button are pressed at once, it resets the counter.

Definition at line 22 of file IncrementDecrementButtons.hpp.

+ Collaboration diagram for IncrementDecrementButtons:

Public Types

enum  State {
  Nothing = 0 , IncrementShort , IncrementLong , IncrementHold ,
  DecrementShort , DecrementLong , DecrementHold , Reset
}
 An enumeration of the different actions to be performed by the counter. More...
 

Public Member Functions

 IncrementDecrementButtons (const Button &incrementButton, const Button &decrementButton)
 Create a IncrementDecrementButtons object.
 
void begin ()
 
State update ()
 Update and return the state of the increment/decrement button.
 
State getState () const
 Return the state of the increment/decrement button without updating it.
 
void invert ()
 

Protected Member Functions

State updateImplementation ()
 

Private Types

enum  { Initial , LongPress , AfterReset }
 

Private Attributes

Button incrementButton
 
Button decrementButton
 
enum AH::IncrementDecrementButtons:: { ... }  longPressState = Initial
 
unsigned long longPressRepeat
 
State state = Nothing
 

Member Enumeration Documentation

◆ State

An enumeration of the different actions to be performed by the counter.

Enumerator
Nothing 

The counter should not be incremented.

IncrementShort 

The counter must be incremented (after short press).

IncrementLong 

The counter must be incremented (after long press).

IncrementHold 

The counter must be incremented (still pressed).

DecrementShort 

The counter must be decremented (after short press).

DecrementLong 

The counter must be decremented (after long press).

DecrementHold 

The counter must be decremented (still pressed).

Reset 

The counter should be reset to the initial value.

Definition at line 49 of file IncrementDecrementButtons.hpp.

◆ anonymous enum

anonymous enum
private
Enumerator
Initial 
LongPress 
AfterReset 

Definition at line 86 of file IncrementDecrementButtons.hpp.

Constructor & Destructor Documentation

◆ IncrementDecrementButtons()

IncrementDecrementButtons ( const Button & incrementButton,
const Button & decrementButton )
inline

Create a IncrementDecrementButtons object.

Parameters
incrementButtonThe button to increment the counter.
The button is copied.
decrementButtonThe button to decrement the counter.
The button is copied.

Definition at line 34 of file IncrementDecrementButtons.hpp.

Member Function Documentation

◆ begin()

void begin ( )
inline
See also
Button::begin

Definition at line 39 of file IncrementDecrementButtons.hpp.

◆ update()

State update ( )
inline

Update and return the state of the increment/decrement button.

Definition at line 63 of file IncrementDecrementButtons.hpp.

◆ getState()

State getState ( ) const
inline

Return the state of the increment/decrement button without updating it.

Returns the same value as the last update call.

Definition at line 71 of file IncrementDecrementButtons.hpp.

◆ invert()

void invert ( )
inline
See also
Button::invert

Definition at line 74 of file IncrementDecrementButtons.hpp.

◆ updateImplementation()

IncrementDecrementButtons::State updateImplementation ( )
protected

Definition at line 6 of file IncrementDecrementButtons.cpp.

Member Data Documentation

◆ incrementButton

Button incrementButton
private

Definition at line 83 of file IncrementDecrementButtons.hpp.

◆ decrementButton

Button decrementButton
private

Definition at line 84 of file IncrementDecrementButtons.hpp.

◆ []

enum { ... } longPressState

◆ longPressRepeat

unsigned long longPressRepeat
private

Definition at line 91 of file IncrementDecrementButtons.hpp.

◆ state

State state = Nothing
private

Definition at line 92 of file IncrementDecrementButtons.hpp.


The documentation for this class was generated from the following files: