Skip to main content

Library that eases interacting with physical buttons through the Raspberry Pi GPIO

Project description

GPIO controller for Raspberry Pi

CI PyPI TestPyPI

This package provides classes to interact with physical buttons connected to a Raspberry Pi's GPIO. Those classes make it easy to run event-driven callbacks.

Brief example

The example below illustrates the implementation of a callback to execute asynchronously when clicking a button:

from rpicontrols import Controller, Button, PullType, make_controller

# Initialize the button controller. A single instance can handle as many buttons as needed.
controller: Controller = make_controller()

# Create the button, connected to pin 22.
button: Button = controller.make_button(
    input_pin_id=22,  # Id of the GPIO pin the button switch is connected to.
    input=Button.InputType.PRESSED_WHEN_OFF,  # Depends on the physical wiring of the button.
    pull=PullType.UP  # Whether to enable pull-up or pull-down resistor. Use PullType.NONE to disable.
)

# Define a callback to run when button is clicked.
async def on_click_callback(button: Button) -> None:
    print(f'Button {button.name} clicked!')

    # Run some IO-bound task without blocking.
    # Other event handlers may run while waiting.
    await asyncio.sleep(2)

# Subscribe to the click event.
button.add_on_click(on_click_callback)

# Start controller main loop. Use controller.start_in_thread() for the non-blocking version.
controller.run()

Asynchronous callbacks are optional and synchronous ones work just fine. Check out the full documentation here for all the details.

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

rpi-controls-1.0.3.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

rpi_controls-1.0.3-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file rpi-controls-1.0.3.tar.gz.

File metadata

  • Download URL: rpi-controls-1.0.3.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.10

File hashes

Hashes for rpi-controls-1.0.3.tar.gz
Algorithm Hash digest
SHA256 2dfba423d3e077ece9b3b5981a5be797fc717deb5050e15a273a159367335366
MD5 0265ec2ae8b522b268a119824aacc1d6
BLAKE2b-256 cce64b8c0298ee059f5ff3b2cb052a647cd07e733c026ba9af7e94498b5cc07a

See more details on using hashes here.

File details

Details for the file rpi_controls-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: rpi_controls-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.10

File hashes

Hashes for rpi_controls-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 df6c8348a4fe6a46f1a34526e7e94810270629f2afc9beaa3a45e448ba7aa9a4
MD5 648fbcbf772084bd6a681b516b5e4ac9
BLAKE2b-256 96424466db0bcebe367a2347bd4fb6a4e8ed0e17768c0d82876454e5ed43d03a

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