AceButton  1.4
An adjustable, compact, event-driven button library for Arduino.
Public Member Functions | List of all members
ace_button::Encoded8To3ButtonConfig Class Reference

A ButtonConfig that handles an 8-to-3 binary encoder which converts 8 inputs into 3 outputs. More...

#include <Encoded8To3ButtonConfig.h>

Inheritance diagram for ace_button::Encoded8To3ButtonConfig:
Inheritance graph
[legend]
Collaboration diagram for ace_button::Encoded8To3ButtonConfig:
Collaboration graph
[legend]

Public Member Functions

 Encoded8To3ButtonConfig (uint8_t pin0, uint8_t pin1, uint8_t pin2, uint8_t defaultReleasedState=HIGH)
 
int readButton (uint8_t pin) override
 Return state of the encoded 'pin' number, corresponding to the pull-down states of the actual pins. More...
 
- Public Member Functions inherited from ace_button::ButtonConfig
 ButtonConfig ()
 Constructor. More...
 
uint16_t getDebounceDelay ()
 Milliseconds to wait for debouncing. More...
 
uint16_t getClickDelay ()
 Milliseconds to wait for a possible click. More...
 
uint16_t getDoubleClickDelay ()
 Milliseconds between the first and second click to register as a double-click.
 
uint16_t getLongPressDelay ()
 Milliseconds for a long press event. More...
 
uint16_t getRepeatPressDelay ()
 Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed events. More...
 
uint16_t getRepeatPressInterval ()
 Milliseconds between two successive RepeatPressed events.
 
void setDebounceDelay (uint16_t debounceDelay)
 Set the debounceDelay. More...
 
void setClickDelay (uint16_t clickDelay)
 Set the clickDelay. More...
 
void setDoubleClickDelay (uint16_t doubleClickDelay)
 Set the doubleClickDelay. More...
 
void setLongPressDelay (uint16_t longPressDelay)
 Set the longPressDelay. More...
 
void setRepeatPressDelay (uint16_t repeatPressDelay)
 Set the repeatPressDelay. More...
 
void setRepeatPressInterval (uint16_t repeatPressInterval)
 Set the repeatPressInterval. More...
 
virtual unsigned long getClock ()
 Return the milliseconds of the internal clock. More...
 
virtual unsigned long getClockMicros ()
 Return the microseconds of the internal clock. More...
 
bool isFeature (FeatureFlagType features)
 Check if the given features are enabled. More...
 
void setFeature (FeatureFlagType features)
 Enable the given features. More...
 
void clearFeature (FeatureFlagType features)
 Disable the given features. More...
 
EventHandler getEventHandler ()
 Return the eventHandler. More...
 
void setEventHandler (EventHandler eventHandler)
 Install the event handler. More...
 
void setTimingStats (TimingStats *timingStats)
 Set the timing stats object. More...
 
TimingStatsgetTimingStats ()
 Get the timing stats. More...
 

Additional Inherited Members

- Public Types inherited from ace_button::ButtonConfig
typedef uint16_t FeatureFlagType
 Type of the feature flag. More...
 
typedef void(* EventHandler) (AceButton *button, uint8_t eventType, uint8_t buttonState)
 The event handler signature. More...
 
- Static Public Member Functions inherited from ace_button::ButtonConfig
static ButtonConfiggetSystemButtonConfig ()
 Return a pointer to the singleton instance of the ButtonConfig which is attached to all AceButton instances by default.
 
- Static Public Attributes inherited from ace_button::ButtonConfig
static const uint16_t kDebounceDelay = 20
 Default value returned by getDebounceDelay(). More...
 
static const uint16_t kClickDelay = 200
 Default value returned by getClickDelay(). More...
 
static const uint16_t kDoubleClickDelay = 400
 Default value returned by getDoubleClickDelay(). More...
 
static const uint16_t kLongPressDelay = 1000
 Default value returned by getLongPressDelay(). More...
 
static const uint16_t kRepeatPressDelay = 1000
 Default value returned by getRepeatPressDelay(). More...
 
static const uint16_t kRepeatPressInterval = 200
 Default value returned by getRepeatPressInterval(). More...
 
static const FeatureFlagType kFeatureClick = 0x01
 Flag to activate the AceButton::kEventClicked event. More...
 
static const FeatureFlagType kFeatureDoubleClick = 0x02
 Flag to activate the AceButton::kEventDoubleClicked event. More...
 
static const FeatureFlagType kFeatureLongPress = 0x04
 Flag to activate the AceButton::kEventLongPress event. More...
 
static const FeatureFlagType kFeatureRepeatPress = 0x08
 Flag to activate the AceButton::kEventRepeatPressed event. More...
 
static const FeatureFlagType kFeatureSuppressAfterClick = 0x10
 Flag to suppress kEventReleased after a kEventClicked. More...
 
static const FeatureFlagType kFeatureSuppressAfterDoubleClick = 0x20
 Flag to suppress kEventReleased after a kEventDoubleClicked. More...
 
static const FeatureFlagType kFeatureSuppressAfterLongPress = 0x40
 Flag to suppress kEventReleased after a kEventLongPressed. More...
 
static const FeatureFlagType kFeatureSuppressAfterRepeatPress = 0x80
 Flag to suppress kEventReleased after a kEventRepeatPressed. More...
 
static const FeatureFlagType kFeatureSuppressClickBeforeDoubleClick = 0x100
 Flag to suppress kEventClicked before a kEventDoubleClicked. More...
 
static const FeatureFlagType kFeatureSuppressAll
 Convenience flag to suppress all suppressions. More...
 
- Protected Member Functions inherited from ace_button::ButtonConfig
virtual void init ()
 Initialize to its pristine state, except for the EventHandler which is unchanged. More...
 

Detailed Description

A ButtonConfig that handles an 8-to-3 binary encoder which converts 8 inputs into 3 outputs.

In practice, this means that 7 buttons can be handled with 3 pins, because the 0th button is used to represent "no button pressed". One easy way to perform the 8-to-3 encoding is to use 9 diodes with 7 switches. Another way is to use an 74LS148 binary encoder. In either case, each switch translates into a 3-bit binary number, which becomes the button's "virtual" pin number:

Button S0 cannot be used because the code 000 is used to indicate that no button was pressed.

Definition at line 53 of file Encoded8To3ButtonConfig.h.

Constructor & Destructor Documentation

◆ Encoded8To3ButtonConfig()

ace_button::Encoded8To3ButtonConfig::Encoded8To3ButtonConfig ( uint8_t  pin0,
uint8_t  pin1,
uint8_t  pin2,
uint8_t  defaultReleasedState = HIGH 
)
inline
Parameters
pin0the pin number representing bit0 of the binary encoder
pin1the pin number representing bit1 of the binary encoder
pin2the pin number representing bit2 of the binary encoder
defaultReleasedStatestate of the encoder bit when the button is in the released state. For a pull-up wiring, the state of the pin is HIGH when the button is released. This value is used to configure wiring of the virtual button, so that it matches the wiring of the physical buttons. The LS74148 encoder uses a pull-up wiring, so this should be set HIGH. The default value is HIGH.

Definition at line 67 of file Encoded8To3ButtonConfig.h.

Member Function Documentation

◆ readButton()

int ace_button::Encoded8To3ButtonConfig::readButton ( uint8_t  pin)
inlineoverridevirtual

Return state of the encoded 'pin' number, corresponding to the pull-down states of the actual pins.

LOW means that the corresponding encoded virtual pin was pushed.

Reimplemented from ace_button::ButtonConfig.

Definition at line 79 of file Encoded8To3ButtonConfig.h.


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