Skip to main content

A rotary encoder library for the raspberry pi that "just works"

Project description

Rotary Encoder

A rotary encoder package for the Raspberry pi that "just works".

Tested with a KY-040 Rotary Encoder on a Raspberry pi 3 B+

Installation

Install via pip:

pip install rpi-rotary-encoder

Example

import rotary_encoder


counter = 0

def increment():
    global counter
    counter += 1
    print(counter)


def decrement():
    global counter
    counter -= 1
    print(counter)


def press():
    print("PRESS")


def release():
    print("RELEASE")


with rotary_encoder.connect(
    clk_pin=20,                           # required
    dt_pin=21,                            # required
    sw_pin=26,                            # optional
    on_clockwise_turn=increment,          # optional
    on_counter_clockwise_turn=decrement,  # optional
    on_button_down=press,                 # optional
    on_button_up=release,                 # optional
):
    input("press enter to quit\n")

Advanced Usage

When calling connect you can pass in an optional callback_handling argument. This controls how the callbacks are executed. The options are:

  • CallbackHandling.GLOBAL_WORKER_THREAD: The default. Callbacks are called in a global worker thread. This means all callbacks across all rotary encoders are called in the same thread. This ensures that all callbacks are executed sequentially. This is the least likely to cause problems with race conditions.
  • CallbackHandling.LOCAL_WORKER_THREAD: Similar to the above, except that each individual rotary encoders callbacks are executed on a different thread. This means that sequential execution of the callbacks of one encoder is still guaranteed, but not across several encoders. The responsiveness of the individual encoders may be slightly improved.
  • CallbackHandling.SPAWN_THREAD: Spawn a new thread for every callback. The execution of your callbacks is no longer sequential, and you will have to make sure that your callbacks are thread safe.
  • CallbackHandling.GPIO_INTERUPT_THREAD: Not recommended. Similar in behavior to CallbackHandling.SPAWN_THREAD except that the threads are spawned by the underlying C extension library.

Similar Projects:

The pigpio-encoder is a similar library based on pigpio.

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_rotary_encoder-0.2.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

rpi_rotary_encoder-0.2.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file rpi_rotary_encoder-0.2.0.tar.gz.

File metadata

  • Download URL: rpi_rotary_encoder-0.2.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.11.0 Darwin/21.6.0

File hashes

Hashes for rpi_rotary_encoder-0.2.0.tar.gz
Algorithm Hash digest
SHA256 95eb0bae21f21d077fd863b95b09f58b6dd13c9c434e1fb88f620f39325f9d86
MD5 e4a9c8ae162c48f01c172cf6e915f591
BLAKE2b-256 abf38cbe54ab13f6846ccce5032c0e8f6d8ae94f18df3b211be28142af7f3030

See more details on using hashes here.

File details

Details for the file rpi_rotary_encoder-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rpi_rotary_encoder-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff2ad0448990a593badd9d5e8b2d1e0b600a065352e5302b816ab5482b0628b4
MD5 2aaeaa8d19853639f5ec13fe2737d085
BLAKE2b-256 7420134aacfd822cc73440ae600fd14599aa322d3c9c28b3210df7b6129e7f45

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