Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/luni64/encodertool

The EncoderTool is a library to manage and read out rotary encoders connected either directly or via multiplexers to ARM based boards. Encoder push buttons are supported. Callback functions can be attached to encoder changes and button presses to allow for event driven applications
https://github.com/luni64/encodertool

4051 4067 74165 callback debouncing detents encoder encoder-button encoders multiplexed-encoders polling quadrature rotary-encoders state-machine teensy

Last synced: 3 days ago
JSON representation

The EncoderTool is a library to manage and read out rotary encoders connected either directly or via multiplexers to ARM based boards. Encoder push buttons are supported. Callback functions can be attached to encoder changes and button presses to allow for event driven applications

Awesome Lists containing this project

README

        

# EncoderTool  [![Badge License]][License]  [![Badge Arduino]][Arduino]  [![Badge PlatformIO]][PlatformIO]

*Bounce-Free Rotary Encoder Library*

 **+** *Standard or Multiplexed Wiring* 

 **+** *Push Button Support* 

 **+** *Callback System*


---

[
 Examples 
][Examples] 
[
 Boards 
][Schematics] 
[
 Documentation 
][Documentation] 
[
 Contributors 
][Contributors]

---


## Supports


- All common encoders with and without push buttons

- Directly connected encoders (A+B+Button to pins)

- Multiplexed encoders using

- [`74HC165 (up to 32 encoders)`][MPLEX74165]

- [`40HC67 (up to 16 encoders)`][MPLEX4067]

- [`40HC51 (up to 8 encoders)`][MPLEX4051]

- [`Encoder Matrix`][MPLEX_Matrix]

- Easy to adapt for your preferred multiplexer

- Interrupt based or polled readout strategies


## Board Compatibility


- PJRC Teensy (Teensy-LC, Teensy 3.x, Teensy 4.x, MicroMod)

- SAMD (SEEED XIAO, Nano33 ...)

- 8bit Arduino AVR (UNO, Nano, Mega...)

- ESP32

- Fallback solution for other boards (using slow digitalRead/Write)


## Features

- Fully bounce free readout without additional hardware

- Provides hard and cyclic count limits

- Supports and debounces encoder push buttons

- Modern callback system for event driven applications

- Encoders can be connected directly (A / B / Btn connected to pins)

- Encoder connection using various multiplexers (up to 32 encoders on only 4 control pins)

- Schematics and Gerbers available for multiplexed encoder boards (Eagle/KiCad).

[PlatformIO]: https://registry.platformio.org/libraries/luni64/EncoderTool/
[Arduino]: https://www.arduino.cc/reference/en/libraries/encodertool/

[License]: LICENSE
[MPLEX74165]:Resources/Extras#multiplexing-with-74hc165
[MPLEX4067]:Resources/Extras#multiplexing-with-cd4067
[MPLEX4051]:Resources/Extras#multiplexing-with-cd4051
[MPLEX_Matrix]:Resources/Extras#using-a-directly-connected-encoder-matrix

[Documentation]: Documentation/Overview.md
[Contributors]: Documentation/Contributors.md
[Schematics]: Resources/Extras
[Examples]: examples

[MPLEX74165]: Resources/Extras/Boards/MPX_74165
[MPLEX4067]: Resources/Extras/Boards/MPX_4067
[MPLEX4051]: Resources/Extras/Boards/MPX_4051

[Badge PlatformIO]: https://img.shields.io/badge/PlatformIO-EncoderTool-fd7e14.svg?style=for-the-badge
[Badge Arduino]: https://img.shields.io/badge/EncoderTool-00979D.svg?style=for-the-badge&logo=Arduino&logoColor=white&labelColor=gray
[Badge License]: https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge