![]() |
MD_UISwitch Library
1.2
Library for different types of User Interface switches
|
#include <MD_UISwitch.h>
Public Member Functions | |
Class constructor and destructor. | |
MD_UISwitch_Matrix (uint8_t rows, uint8_t cols, uint8_t *rowPin, uint8_t *colPin, char *kt) | |
~MD_UISwitch_Matrix () | |
Methods for core object control. | |
virtual void | begin (void) |
virtual keyResult_t | read (void) |
![]() | |
MD_UISwitch (void) | |
~MD_UISwitch () | |
virtual uint8_t | getKey (void) |
void | setDebounceTime (uint16_t t) |
void | setDoublePressTime (uint16_t t) |
void | setLongPressTime (uint16_t t) |
void | setRepeatTime (uint16_t t) |
void | enableDoublePress (boolean f) |
void | enableLongPress (boolean f) |
void | enableRepeat (boolean f) |
void | enableRepeatResult (boolean f) |
Protected Attributes | |
uint8_t | _rows |
number of rows in the key matrix | |
uint8_t | _cols |
number of columns in the key matrix | |
uint8_t * | _rowPin |
array of pins connected to the rows | |
uint8_t * | _colPin |
array of pins connected to the columns | |
char * | _kt |
analog key values in a char string | |
![]() | |
state_t | _state |
the FSM current state | |
uint32_t | _timeActive |
the millis() time it was last activated | |
uint8_t | _enableFlags |
functions enabled/disabled | |
uint16_t | _timeDebounce |
debounce time in milliseconds | |
uint16_t | _timeDoublePress |
double press detection time in milliseconds | |
uint16_t | _timeLongPress |
long press time in milliseconds | |
int16_t | _timeRepeat |
repeat time delay in milliseconds | |
uint8_t | _lastKey |
persists the last key value until a new one is detected | |
int16_t | _lastKeyIdx |
internal index of the last key read | |
Additional Inherited Members | |
![]() | |
enum | keyResult_t { KEY_NULL, KEY_PRESS, KEY_DPRESS, KEY_LONGPRESS, KEY_RPTPRESS } |
![]() | |
enum | state_t { S_IDLE, S_DEBOUNCE1, S_DEBOUNCE2, S_PRESS, S_DPRESS, S_LPRESS, S_REPEAT, S_WAIT } |
![]() | |
keyResult_t | processFSM (bool bState, bool reset=0) |
Extension class MD_UISwitch_Matrix.
Implements keyboard matrix switches that need to be scanned to detect a keypress.
The class will scan a key matrix that typically have circuits and connections similar to that shown below. Each row and column is separately connected to a digital pin, and arrays of pin numbers are passed to the class constructor to allow the code to scan the matrix to determine which key has been pressed. Pins should be directly connected to the matrix without pull-up or pull-down resistors. The library does not make a copy of the pin arrays so they should remain in scope for the life of the object.
The class will only return a valid key press if only one key is pressed. If more than one key is pressed simultaneously, all the keys are ignored until just a single key is again detected.
MD_UISwitch_Matrix::MD_UISwitch_Matrix | ( | uint8_t | rows, |
uint8_t | cols, | ||
uint8_t * | rowPin, | ||
uint8_t * | colPin, | ||
char * | kt | ||
) |
Class Constructor.
Instantiate a new instance of the class. The parameters passed are used to the hardware interface to the switch.
The class will only return a valid key if just one key is pressed. If more than one key is pressed simultaneously, all the keys are ignored until just a single key is again detected.
The class does not make copies of the pin array so they should remain in scope for the life of the object.
rows | the number of rows in the key matrix. |
cols | the number of columns in the key matrix. |
rowPin | array of rows elements of ordered row pins to which the switches are connected. |
colPin | array of cols elements of ordered column pins to which the switches are connected. |
kt | the key table. An array of characters arranged in by column then row. |
MD_UISwitch_Matrix::~MD_UISwitch_Matrix | ( | ) |
Class Destructor.
Release allocated memory and does the necessary to clean up once the queue is no longer required.
|
virtual |
Initialize the object.
Initialise the object data. This needs to be called during setup() to initialise new data for the class that cannot be done during the object creation.
Reimplemented from MD_UISwitch.
|
virtual |
Return the key pressed of the switch matrix
Return one of the keypress types depending on what has been detected. The timing for each keypress starts when the first transition of the switch from inactive to active state and is recognised by a finite state machine whose operation is directed by the timer and option values specified.
Reimplemented from MD_UISwitch.