Buttons¶
Overview¶
The micro:bit has two forward facing buttons either side of the display, buttonA
and buttonB
. These are intuitively exposed on the MicroBit
object as uBit.buttonA
and uBit.buttonB
. A third button, uBit.buttonAB
is used to detect the combined
input of buttonA
and buttonB
, and is an instance of the class MicroBitMultiButton
.
Hardware buttons are notoriously renowned for generating multiple open/close transitions for what a user perceives as a single press, which can make depending on the raw input of a button unreliable. To combat this, a technique called 'debouncing' is used, which periodically polls the state of the button, when a transition from open to close (and vice versa) is detected. Through periodically polling the button, we get a more accurate representation of the state of a button.
MicroBitButton
s and MicroBitMultiButton
s are debounced in
software and provide a number of events that can be used to detect different
variations of presses.
The MicroBitButton
debouncing mechanism is used to provide resistive touch sensing on MicroBitPin
s
and could also be used on external 'button-like' input if required.
Message Bus ID¶
Constant | Value |
---|---|
MICROBIT_ID_BUTTON_A | 1 |
MICROBIT_ID_BUTTON_B | 2 |
Message Bus Events¶
Constant | Value |
---|---|
MICROBIT_BUTTON_EVT_DOWN | 1 |
MICROBIT_BUTTON_EVT_UP | 2 |
MICROBIT_BUTTON_EVT_CLICK | 3 |
MICROBIT_BUTTON_EVT_LONG_CLICK | 4 |
MICROBIT_BUTTON_EVT_HOLD | 5 |
MICROBIT_BUTTON_EVT_DOUBLE_CLICK | 6 |
API¶
Constructor¶
MicroBitButton( PinName name, uint16_t id)¶
Description¶
Constructor.
Create a software representation of a button.
Parameters¶
PinNamename - the physical pin on the processor that should be used as input.uint16_tid - the ID of the new MicroBitButton object.
Example¶
buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A);
MicroBitButton( PinName name, uint16_t id, MicroBitButtonEventConfiguration eventConfiguration)¶
Description¶
Constructor.
Create a software representation of a button.
Parameters¶
PinNamename - the physical pin on the processor that should be used as input.uint16_tid - the ID of the new MicroBitButton object.MicroBitButtonEventConfigurationeventConfiguration - Configures the events that will be generated by this MicroBitButton instance. Defaults to MICROBIT_BUTTON_ALL_EVENTS.
Example¶
buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A);
MicroBitButton( PinName name, uint16_t id, MicroBitButtonEventConfiguration eventConfiguration, PinMode mode)¶
Description¶
Constructor.
Create a software representation of a button.
Parameters¶
PinNamename - the physical pin on the processor that should be used as input.uint16_tid - the ID of the new MicroBitButton object.MicroBitButtonEventConfigurationeventConfiguration - Configures the events that will be generated by this MicroBitButton instance. Defaults to MICROBIT_BUTTON_ALL_EVENTS.PinModemode - the configuration of internal pullups/pulldowns, as defined in the mbed PinMode class. PullNone by default.
Example¶
buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A);
isPressed¶
int isPressed()¶
Description¶
Tests if this Button is currently pressed.
Returns¶
1 if this button is pressed, 0 otherwise.
Example¶
if(buttonA.isPressed())
display.scroll("Pressed!");
setEventConfiguration¶
void setEventConfiguration( MicroBitButtonEventConfiguration config)¶
Description¶
Changes the event configuration used by this button to the given MicroBitButtonEventConfiguration.
All subsequent events generated by this button will then be informed by this configuraiton.
Parameters¶
MicroBitButtonEventConfigurationconfig - The new configuration for this button. Legal values are MICROBIT_BUTTON_ALL_EVENTS or MICROBIT_BUTTON_SIMPLE_EVENTS.
Example¶
// Configure a button to generate all possible events.
buttonA.setEventConfiguration(MICROBIT_BUTTON_ALL_EVENTS);
// Configure a button to suppress MICROBIT_BUTTON_EVT_CLICK and MICROBIT_BUTTON_EVT_LONG_CLICK events.
buttonA.setEventConfiguration(MICROBIT_BUTTON_SIMPLE_EVENTS);