AbleButtons V0.2.0
Lightweight button library for Arduino.
 
Loading...
Searching...
No Matches
able::Button< Circuit, Pin > Class Template Reference

Core Button class. More...

#include <Button.h>

+ Inheritance diagram for able::Button< Circuit, Pin >:

Public Member Functions

 Button (uint8_t pin)
 Create a button on the specified pin. More...
 
void begin ()
 Initialise the button. More...
 
void handle ()
 Handle the button. More...
 
bool resetClicked ()
 Reset the clicked state of the button, returning what is was. More...
 
bool resetDoubleClicked ()
 Reset the double-clicked state of the button, returning what is was. More...
 
bool isPressed () const
 Determine if the button is currently pressed. More...
 
bool isHeld () const
 Determine if the button is currently held down. More...
 
bool isIdle () const
 Determine if the button is currently idle (unpressed for a "long" time). More...
 
bool isClicked () const
 Determine if the button is clicked. More...
 
bool isDoubleClicked () const
 Determine if the button is double-clicked. More...
 

Protected Member Functions

void readPin ()
 Read the pin directly. More...
 

Static Protected Member Functions

static uint8_t nextId ()
 Return the next auto-assigned button identifier. More...
 

Protected Attributes

uint8_t pin_
 The Arduino pin connected to the button. More...
 
uint8_t currState_
 The reading of the pin. More...
 

Static Protected Attributes

static uint8_t autoId_ = 0
 Auto-assigned button identifier. More...
 

Detailed Description

template<typename Circuit, typename Pin>
class able::Button< Circuit, Pin >

Core Button class.

It supports pulldown and pull-up resistor circuits specified using the Circuit template parameter and different pin features using the Pin template parameter.

Parameters
CircuitEither a PullupResistorCircuit or PulldownResistorCircuit class matching the resistor circuit used with the button.
PinThe Pin class, or a subclass (DebouncedPin or ClickerPin) providing additional debounced readings and clicked states.

Definition at line 22 of file Button.h.

Constructor & Destructor Documentation

◆ Button()

template<typename Circuit , typename Pin >
able::Button< Circuit, Pin >::Button ( uint8_t  pin)
inline

Create a button on the specified pin.

Parameters
pinThe pin connected to the button.

Definition at line 33 of file Button.h.

Member Function Documentation

◆ begin()

template<typename Circuit , typename Pin >
void able::Button< Circuit, Pin >::begin ( )
inline

Initialise the button.

Called from setup() of an Arduino program.

Definition at line 51 of file Button.h.

◆ handle()

template<typename Circuit , typename Pin >
void able::Button< Circuit, Pin >::handle ( )
inline

Handle the button.

Called from loop() of an Arduino program.

Definition at line 58 of file Button.h.

◆ isClicked()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::isClicked ( ) const
inline

Determine if the button is clicked.

Clicks are registered as a press then release. If the ClickerPin (or subclass) is used, the button returns the click state, otherwise the compile will fail with errors.

Returns
True if clicked else false.

Definition at line 132 of file Button.h.

◆ isDoubleClicked()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::isDoubleClicked ( ) const
inline

Determine if the button is double-clicked.

Double-clicks are registered as two clicks within the double-click time. If the DoubleClickPin is used, the button returns the double-click state, otherwise the compile will fail with errors.

Returns
True if double-clicked else false.

Definition at line 144 of file Button.h.

◆ isHeld()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::isHeld ( ) const
inline

Determine if the button is currently held down.

Returns
True if held, else false.

Definition at line 112 of file Button.h.

◆ isIdle()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::isIdle ( ) const
inline

Determine if the button is currently idle (unpressed for a "long" time).

Returns
True if idle, else false.

Definition at line 121 of file Button.h.

◆ isPressed()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::isPressed ( ) const
inline

Determine if the button is currently pressed.

Returns
True if pressed, else false.

Definition at line 103 of file Button.h.

◆ nextId()

static uint8_t able::Pin::nextId ( )
inlinestaticprotectedinherited

Return the next auto-assigned button identifier.

Returns
The next auto-assigned button identifier. Each call increases the auto-assigned identifier.

Definition at line 29 of file Pins.h.

◆ readPin()

void able::Pin::readPin ( )
inlineprotectedinherited

Read the pin directly.

In order to save memory, virtual functions are not used (which can consume almost 1K of memory to deal with). Runtime polymorphism is not required, so avoiding virtual functions saves memory.

Definition at line 62 of file Pins.h.

◆ resetClicked()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::resetClicked ( )
inline

Reset the clicked state of the button, returning what is was.

This allows the click state to be effectively read once so that a clicked state only triggers something once, when checked. For example toggling something on/off when the button is clicked. For buttons that don't support clicking, the compile will fail with errors.

Returns
True if the button was clicked, else false.

Definition at line 71 of file Button.h.

◆ resetDoubleClicked()

template<typename Circuit , typename Pin >
bool able::Button< Circuit, Pin >::resetDoubleClicked ( )
inline

Reset the double-clicked state of the button, returning what is was.

This allows the double-click state to be effectively read once so that a double-clicked state only triggers something once, when checked. For example toggling something on/off when the button is double- clicked. For buttons that don't support double-clicking, the compile will fail with errors.

Returns
True if the button was double-clicked, else false.

Definition at line 87 of file Button.h.

Member Data Documentation

◆ autoId_

uint8_t able::Pin::autoId_ = 0
staticprotectedinherited

Auto-assigned button identifier.

Definition at line 70 of file Pins.h.

◆ currState_

uint8_t able::Pin::currState_
protectedinherited

The reading of the pin.

Definition at line 73 of file Pins.h.

◆ pin_

uint8_t able::Pin::pin_
protectedinherited

The Arduino pin connected to the button.

Definition at line 72 of file Pins.h.


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