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

A ButtonConfig that handles an N-to-M binary encoder where N = 2^M. More...

#include <EncodedButtonConfig.h>

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

Public Member Functions

 EncodedButtonConfig (uint8_t numPins, const uint8_t pins[], uint8_t numButtons, AceButton *const buttons[], uint8_t defaultReleasedState=HIGH)
 Constructor. More...
 
int readButton (uint8_t pin) override
 Return state of the virtual (i.e. More...
 
void checkButtons () const
 Read the pins once, obtain the virtual pin number, then call each button's checkState() method to trigger any events. More...
 
uint8_t getNoButtonPin () const
 The virtual button pin number corresponding to "no button" pressed.
 
- Public Member Functions inherited from ace_button::ButtonConfig
 ButtonConfig ()=default
 Constructor.
 
virtual ~ButtonConfig ()=default
 If the ButtonConfig is created and deleted on the heap, a virtual destructor is technically required by the C++ language to prevent memory leaks. More...
 
uint16_t getDebounceDelay () const
 Milliseconds to wait for debouncing.
 
uint16_t getClickDelay () const
 Milliseconds to wait for a possible click.
 
uint16_t getDoubleClickDelay () const
 Milliseconds between the first and second click to register as a double-click.
 
uint16_t getLongPressDelay () const
 Milliseconds for a long press event.
 
uint16_t getRepeatPressDelay () const
 Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed events. More...
 
uint16_t getRepeatPressInterval () const
 Milliseconds between two successive RepeatPressed events.
 
uint16_t getHeartBeatInterval () const
 Milliseconds between two successive HeartBeat events.
 
void setDebounceDelay (uint16_t debounceDelay)
 Set the debounceDelay milliseconds.
 
void setClickDelay (uint16_t clickDelay)
 Set the clickDelay milliseconds.
 
void setDoubleClickDelay (uint16_t doubleClickDelay)
 Set the doubleClickDelay milliseconds.
 
void setLongPressDelay (uint16_t longPressDelay)
 Set the longPressDelay milliseconds.
 
void setRepeatPressDelay (uint16_t repeatPressDelay)
 Set the repeatPressDelay milliseconds.
 
void setRepeatPressInterval (uint16_t repeatPressInterval)
 Set the repeatPressInterval milliseconds.
 
void setHeartBeatInterval (uint16_t heartBeatInterval)
 Set the heartBeatInterval milliseconds.
 
virtual unsigned long getClock ()
 Return the milliseconds of the internal clock. More...
 
bool isFeature (FeatureFlagType features) const
 Check if the given features are enabled.
 
void setFeature (FeatureFlagType features)
 Enable the given features.
 
void clearFeature (FeatureFlagType features)
 Disable the given features.
 
void resetFeatures ()
 Disable all (externally visible) features. More...
 
EventHandler getEventHandler () const ACE_BUTTON_DEPRECATED
 Return the eventHandler function pointer. More...
 
void dispatchEvent (AceButton *button, uint8_t eventType, uint8_t buttonState) const
 Dispatch the event to the handler. More...
 
void setEventHandler (EventHandler eventHandler)
 Install the EventHandler function pointer. More...
 
void setIEventHandler (IEventHandler *eventHandler)
 Install the IEventHandler object pointer. More...
 

Protected Member Functions

virtual uint8_t getVirtualPin () const
 Return the virtual pin number corresponding to the combinatorial states of the actual pins. 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 milliseconds returned by getDebounceDelay().
 
static const uint16_t kClickDelay = 200
 Default milliseconds returned by getClickDelay().
 
static const uint16_t kDoubleClickDelay = 400
 Default milliseconds returned by getDoubleClickDelay().
 
static const uint16_t kLongPressDelay = 1000
 Default milliseconds returned by getLongPressDelay().
 
static const uint16_t kRepeatPressDelay = 1000
 Default milliseconds returned by getRepeatPressDelay().
 
static const uint16_t kRepeatPressInterval = 200
 Default milliseconds returned by getRepeatPressInterval().
 
static const uint16_t kHeartBeatInterval = 5000
 Default milliseconds returned by getHeartBeatInterval().
 
static const FeatureFlagType kFeatureClick = 0x01
 Flag to activate the AceButton::kEventClicked event.
 
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.
 
static const FeatureFlagType kFeatureRepeatPress = 0x08
 Flag to activate the AceButton::kEventRepeatPressed event.
 
static const FeatureFlagType kFeatureSuppressAfterClick = 0x10
 Flag to suppress kEventReleased after a kEventClicked.
 
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.
 
static const FeatureFlagType kFeatureSuppressAfterRepeatPress = 0x80
 Flag to suppress kEventReleased after a kEventRepeatPressed.
 
static const FeatureFlagType kFeatureSuppressClickBeforeDoubleClick = 0x100
 Flag to suppress kEventClicked before a kEventDoubleClicked. More...
 
static const FeatureFlagType kFeatureHeartBeat = 0x200
 Flag to enable periodic kEventHeartBeat.
 
static const FeatureFlagType kInternalFeatureIEventHandler = 0x8000
 Internal flag to indicate that mEventHandler is an IEventHandler object pointer instead of an EventHandler function pointer.
 
static const FeatureFlagType kFeatureSuppressAll
 Convenience flag to suppress all suppressions. More...
 

Detailed Description

A ButtonConfig that handles an N-to-M binary encoder where N = 2^M.

This is a generalized version of Encoded4To2ButtonConfig and Encoded8To3ButtonConfig.

Here is an example of how to make EncodedButtonConfig act like an Encoded8To3ButtonConfig:

static const uint8_t PINS[] = {2, 4, 5};
static AceButton b1(1);
static AceButton b2(2);
static AceButton b3(3);
static AceButton b5(5);
static AceButton b6(6);
static AceButton* const BUTTONS[] = {&b1, &b2, &b3, &b5, &b6};
static EncodedButtonConfig buttonConfig(3, PINS, 5, BUTTONS);
void handleEvent(AceButton*, uint8_t, uint8_t);
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
buttonConfig.setEventHandler(handleEvent);
...
}
void loop() {
buttonConfig.checkButtons();
...
}
EncodedButtonConfig(uint8_t numPins, const uint8_t pins[], uint8_t numButtons, AceButton *const buttons[], uint8_t defaultReleasedState=HIGH)
Constructor.

Definition at line 71 of file EncodedButtonConfig.h.

Constructor & Destructor Documentation

◆ EncodedButtonConfig()

ace_button::EncodedButtonConfig::EncodedButtonConfig ( uint8_t  numPins,
const uint8_t  pins[],
uint8_t  numButtons,
AceButton *const  buttons[],
uint8_t  defaultReleasedState = HIGH 
)

Constructor.

Parameters
numPinsnumber of pins used to encode the switches (corresponding to the M)
pinsan array of actual pin numbers (e.g. [2, 4, 5])
numButtonsnumber buttons which are encoded; the maximum number of buttons is 2^{numPins}
buttonsarray of buttons attached to the pins using binary encoding; each button needs to be assigned a virtual pin number between 1 and (2^{numPins} - 1) inclusive; the buttons can be arranged in any order
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 30 of file EncodedButtonConfig.cpp.

Member Function Documentation

◆ checkButtons()

void ace_button::EncodedButtonConfig::checkButtons ( ) const

Read the pins once, obtain the virtual pin number, then call each button's checkState() method to trigger any events.

When the number of buttons becomes greater than 7 or 8, it is more efficient to call this method, instead of calling the check() of each AceButton.

Definition at line 49 of file EncodedButtonConfig.cpp.

◆ getVirtualPin()

uint8_t ace_button::EncodedButtonConfig::getVirtualPin ( ) const
protectedvirtual

Return the virtual pin number corresponding to the combinatorial states of the actual pins.

Returns a number between 1 and (2^{numPins} - 1). 0 means "no button" pressed.

Definition at line 64 of file EncodedButtonConfig.cpp.

◆ readButton()

int ace_button::EncodedButtonConfig::readButton ( uint8_t  pin)
overridevirtual

Return state of the virtual (i.e.

encoded) 'pin' number, corresponding to the pull-down states of the actual pins. LOW means that the corresponding encoded virtual pin was pushed.

This method is not expected to be used. Use the checkButtons() method instead for this class.

Reimplemented from ace_button::ButtonConfig.

Definition at line 44 of file EncodedButtonConfig.cpp.


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