Simple, reliable button with multiple types of click detection.
Supports debounced click, singleClick, doubleClick, longPress and release events.
Provides a generic MultiButton class that can handle any type of input, and the PinButton wrapper to simply use an Arduino digital pin as a button.
Please Star the project on GitHub if you like it!
In the Arduino IDE, click Sketch > Include Library > Manage Libraries.... Then, search for MultiButton and click Install.
In the Arduino IDE, click Sketch > Include Library > MultiButton.
In the Arduino IDE, click File > Examples > MultiButton and choose an example. Connect a switch (or use a piece of wire) between pin 5 and ground (GND).
#include <PinButton.h> // Create a new button object, listening on pin 5. // You can have as many buttons as you like. PinButton myButton(5); bool ledOn = false; void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Read hardware pin, convert to click events myButton.update(); // Toggle the built-in led of the Arduino on each click. // You can also try e.g. isDoubleClick, isLongClick and // isSingleClick. if (myButton.isClick()) { ledOn = !ledOn; digitalWrite(LED_BUILTIN, ledOn); } }#include <PinButton.h> // Create a new button object, listening on pin 5. PinButton myButton(5); void setup() { // Initialize serial port at 115k2 baud. // Use Serial Port Monitor in IDE to see the output. Serial.begin(115200); } void loop() { // Read hardware pin, convert to click events myButton.update(); if (myButton.isSingleClick()) { // Only triggers on a single, short click (i.e. not // on the first click of a double-click, nor on a long click). Serial.println("single"); } if (myButton.isDoubleClick()) { Serial.println("double"); } }See the included ClickEvents example for more types.
All classes and public methods are documented in the source code of the library:
1.3.0 (2024-10-15):
- Support debounce/delay customization (thanks to @jakovkolesnik).
1.2.0 (2022-01-18):
- Support STM32duino boards (thanks to @mixaz).
1.1.0 (2021-11-30):
- Support switch to Vcc with pull-down resistor (thanks to @BerranRemzi).
1.0.0 (2017-01-16):
- Initial version.
The MIT license.