Skip to main content

This helper library simplifies the usage of buttons with CircuitPython, by detecting and differentiating button inputs, returning a set of the inputs and calling their corresponding functions.

Project description

Introduction

Documentation Status Discord Build Status Code Style: Ruff

This helper library simplifies the usage of buttons with CircuitPython, by detecting and differentiating button inputs, returning a set of the inputs and calling their corresponding functions.

Dependencies

This driver depends on:

Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle or individual libraries can be installed using circup.

Installing from PyPI

On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally from PyPI. To install for current user:

pip3 install circuitpython-button-handler

To install system-wide (this may be required in some cases):

sudo pip3 install circuitpython-button-handler

To install in a virtual environment in your current project:

mkdir project-name && cd project-name
python3 -m venv .venv
source .env/bin/activate
pip3 install circuitpython-button-handler

Installing to a Connected CircuitPython Device with Circup

Make sure that you have circup installed in your Python environment. Install it with the following command if necessary:

pip3 install circup

With circup installed and your CircuitPython device connected use the following command to install:

circup install button_handler

Or the following command to update an existing version:

circup update

Usage Example

This simple script showcases the usage of this library using a single button.

Button wiring

GND

D9

import time

import board
from keypad import Keys

from button_handler import ButtonHandler, ButtonInput


def double_press():
    print("Double press detected!")


def short_press():
    print("Short press detected!")


def long_press():
    print("Long press detected!")


def hold():
    print("The button began being held down!")


actions = {
    ButtonInput(ButtonInput.DOUBLE_PRESS, callback=double_press),
    ButtonInput(ButtonInput.SHORT_PRESS, callback=short_press),
    ButtonInput(ButtonInput.LONG_PRESS, callback=long_press),
    ButtonInput(ButtonInput.HOLD, callback=hold),
}

scanner = Keys([board.D9], value_when_pressed=False)
button_handler = ButtonHandler(scanner.events, actions)


while True:
    button_handler.update()
    time.sleep(0.0025)

Documentation

API documentation for this library can be found on Read the Docs.

For information on building library documentation, please check out this guide.

Contributing

Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.

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

circuitpython_button_handler-3.0.0.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file circuitpython_button_handler-3.0.0.tar.gz.

File metadata

File hashes

Hashes for circuitpython_button_handler-3.0.0.tar.gz
Algorithm Hash digest
SHA256 d5f94d03dca145a0573415e6553340ec6e1b2cbf36f615b4c739a6809856b433
MD5 75e7b6ffcb17a023b277001a05081175
BLAKE2b-256 7a96b741d2e0c218c22ce714aac4f030adcf688892f10be1e80a9c54b975f342

See more details on using hashes here.

File details

Details for the file circuitpython_button_handler-3.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for circuitpython_button_handler-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b5e8eb57931e38b0c2269c78e62bd6e7483fd6df230e4523a37e104c0e467e9
MD5 d2e88ae2ec9967727d18c934596b26b6
BLAKE2b-256 42f19961a314cf2c2b1c167a0c3edbf0109ad3720c0522b4bd9d861d1bfdd963

See more details on using hashes here.

Supported by

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