Skip to content

Reliable detection of single, double and long clicks for Arduino.

License

Notifications You must be signed in to change notification settings

poelstra/arduino-multi-button

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

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!

Installing the library

In the Arduino IDE, click Sketch > Include Library > Manage Libraries.... Then, search for MultiButton and click Install.

Using in your own code

In the Arduino IDE, click Sketch > Include Library > MultiButton.

Using the examples

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).

Example: toggle a led

#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);
  }
}

Example: detect single and double click

#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.

Documentation

All classes and public methods are documented in the source code of the library:

Changelog

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.

License

The MIT license.

About

Reliable detection of single, double and long clicks for Arduino.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages