User Tools

Site Tools


mosh:element_library:button

This is an old revision of the document!


Button

This page describes the configuration options available for the MOSH button element, including how to define its properties and map them to virtual wires.

The button element reads a digital GPIO pin and reports press, release, and advanced input events such as long press, double press, and short-long combinations.

Creating a Button element

#include <mosh_core.h>
#include <elements/button.h>
 
MOSH_Core MOSH_Core;
 
const uint8_t pin = 4
MOSH_Element_Button* myButton = nullptr;
 
void setup() {
  myButton.monitor(pin);
  MOSH_Core.registerElement(myButton);
}

Parameter Table:

Option TypeDefaultDescription
id integer Unique Element ID
virtual_wire uint8_t ID(s) of the virtual wire(s) assigned
name string Friendly label
pin uint8_t GPIO pin number connected to the button
active_low bool falseWhether active state is low (true for inverted logic)
pullup bool true Enable internal pull-up resistor
debounce_delay uint8_t 50 Amount of delay (in milliseconds) used for debouncing.
press_delay uint16_t250 Amount of delay (in milliseconds) for determining a short press.
long_press_delayuint16_t750 Amount of delay (in milliseconds) for determining a long press.

Property Status Messages:

enum class MOSH_Element_Button_Status
NameBitDescription
RESET0x00Sent when the switch is first registered.
STATE_ON0x01Sent when the button is placed in the “pressed” position.
STATE_OFF0x02Sent when the button is released
PRESS0x03Sent when the button is pressed and released within the press_delay
DOUBLE_PRESS0x04Sent when the button is pressed and release twice within the press_delay
LONG_PRESS0x05Sent after the button is released after being pressed for long_press_delay
SHORT_LONG_PRESS0x06Sent after a combination of a PRESS and LONG_PRESS
USER_DEF10xFCSent with button_element.send_userdef_1()
USER_DEF20xFDSent with button_element.send_userdef_2()
USER_DEF30xFESent with button_element.send_userdef_3()
USER_DEF40xFFSent with button_element.send_userdef_4()

Static config:

None

Setup Methods:

Methods intended to be called during setup or initialization. These configure how the element behaves and are typically not changed during runtime.

MethodDirectionRequiredParametersDescription
setActiveLow(bool)WriteboolButton is pressed when pulled low
setDebounce(uint16_t)Writeuint16_tSet the debounce time in milliseconds
setLongPressDelay(uint16_t)Writeuint16_tSet the long-press delay in milliseconds
setName(string)WritestringSet a friendly name for the element
setPin(uint8_t)Writeuint8_tThe pin the button is wired to
setPressDelay(uint16_t)Writeuint16_tSet the press delay in milliseconds
setPullup(bool)WriteboolUse the internal pullup

Runtime Methods:

MethodDirectionParametersreturnsDescription
buttonIsPressed()ReadboolReturns true if button is pressed, false if not
getFriendlyName()ReadstringReturns the friendly name of the element
getLastPropertyChange()Readuint32_tget the amount of time (in millis) since the last state change)
getProperty(name)ReadfriendlyName, state, event, lastChangePropertyValueReturns the current value of a property
getID()Readuint8_tReturns the element's unique ID
getName()ReadStringReturns the element's friendly name.
send_userdef_1()User calledvoidUser defined action
send_userdef_2()User calledvoidUser defined action
send_userdef_3()User calledvoidUser defined action
send_userdef_4()User calledvoidUser defined action
/var/www/wiki.moshnetworks.com/data/attic/mosh/element_library/button.1750998649.txt.gz · Last modified: by mosh

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki