Skip to main content

Debouncer supporting multi-button and multi-press gestures.

Project description

Introduction

Responds to complicated button presses across multiple buttons and repeated button presses. Given a set of buttons, presses can be recognized as belonging to any of those buttons, or to any subset of those buttons. Distinguishes between short presses and long presses, which may be combined in any order. Also recognizes an extra-long press, which may not be followed by additional presses.

Builds upon Adafruit's excellent adafruit_debouncer library to provide an alternative to that library's Button class.

Dependencies

This package depends on:

  • Adafruit-CircuitPython-Debouncer
  • Adafruit-Blinka

Usage Example

import time
import board  # provided by Adafruit-Blinka
from multibutton_debouncer import MultiButton

keep_on_ticking = True
def stop_ticking():
    nonlocal keep_on_ticking
    keep_on_ticking = False

buttons = MultiButton(board.D18, board.D5)

# a short press
buttons.set_callback([board.D18], ".", lambda: print("boop"))
buttons.set_callback([board.D5], ".", lambda: print("beep"))

# a long press
buttons.set_callback([board.D18], "_", lambda: print("boooop"))
buttons.set_callback([board.D5], "_", lambda: print("beeeep"))

# repeated presses
buttons.set_callback([board.D18], "...___...", lambda: print("SOS"))  repea

# repeated presses across multiple buttons
buttons.set_callback([board.D18, board.D5], "_..__", lambda: print("Two Bits!"))

# an extra-long press across multiple buttons
buttons.set_callback([board.D18, board.D5], "~", stop_ticking)

while keep_on_ticking:
    time.sleep(1/60)

    # `poll()` MUST be called frequently to update state
    # (this will be familiar to users of Adafruit-Debouncer)
    buttons.poll()

Updates and Feedback

The documentation is pretty limited. That'll be fixed presently, but until then, you may wish to look at the public methods of MultiButton as well as the Press enumeration.

This is my first contribution to the Python ecosystem. I will be grateful for any feedback you may have.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multibutton-debouncer-0.0.1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multibutton_debouncer-0.0.1-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file multibutton-debouncer-0.0.1.tar.gz.

File metadata

  • Download URL: multibutton-debouncer-0.0.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for multibutton-debouncer-0.0.1.tar.gz
Algorithm Hash digest
SHA256 194fcf7cbc5172ae5fc58276c9bb4d922c87f6bf2274d27f8eb35dea76eaa05d
MD5 2208cbe08a70f39120f83ca9b2880f7a
BLAKE2b-256 2c9bd11885c656de168115f5190588e33acc0dd0307825ec52d89df58a232ac6

See more details on using hashes here.

File details

Details for the file multibutton_debouncer-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for multibutton_debouncer-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e88a6096cad87a078dbd23ff82ea605249e0719d413f53a9124cbf620f1f6e01
MD5 9e3a17e94152db46c1a1a7f2c20b4503
BLAKE2b-256 7d649091feea0cd785ca2c917e7476a7895d82c63999852ecc45751b03468d23

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page