{"id":20275082,"url":"https://github.com/luni64/encodertool","last_synced_at":"2025-03-02T14:19:06.628Z","repository":{"id":40350728,"uuid":"263095092","full_name":"luni64/EncoderTool","owner":"luni64","description":"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","archived":false,"fork":false,"pushed_at":"2025-01-15T18:46:59.000Z","size":9621,"stargazers_count":51,"open_issues_count":2,"forks_count":13,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-23T22:41:34.490Z","etag":null,"topics":["4051","4067","74165","callback","debouncing","detents","encoder","encoder-button","encoders","multiplexed-encoders","polling","quadrature","rotary-encoders","state-machine","teensy"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luni64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-05-11T16:18:17.000Z","updated_at":"2025-02-11T07:59:13.000Z","dependencies_parsed_at":"2024-04-19T14:09:41.232Z","dependency_job_id":null,"html_url":"https://github.com/luni64/EncoderTool","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luni64%2FEncoderTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luni64%2FEncoderTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luni64%2FEncoderTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luni64%2FEncoderTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luni64","download_url":"https://codeload.github.com/luni64/EncoderTool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241516034,"owners_count":19975145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["4051","4067","74165","callback","debouncing","detents","encoder","encoder-button","encoders","multiplexed-encoders","polling","quadrature","rotary-encoders","state-machine","teensy"],"created_at":"2024-11-14T13:07:55.903Z","updated_at":"2025-03-02T14:19:06.604Z","avatar_url":"https://github.com/luni64.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# EncoderTool  [![Badge License]][License]  [![Badge Arduino]][Arduino]  [![Badge PlatformIO]][PlatformIO]\n\n*Bounce-Free Rotary Encoder Library* \u003cbr\u003e\n **+** *Standard or Multiplexed Wiring* \u003cbr\u003e\n **+** *Push Button Support* \u003cbr\u003e\n **+** *Callback System*\n\n\u003cbr\u003e\n\n\u003cdiv align = center\u003e\n\n---\n\n[\u003ckbd\u003e \u003cbr\u003e Examples \u003cbr\u003e \u003c/kbd\u003e][Examples] \n[\u003ckbd\u003e \u003cbr\u003e Boards \u003cbr\u003e \u003c/kbd\u003e][Schematics] \n[\u003ckbd\u003e \u003cbr\u003e Documentation \u003cbr\u003e \u003c/kbd\u003e][Documentation] \n[\u003ckbd\u003e \u003cbr\u003e Contributors \u003cbr\u003e \u003c/kbd\u003e][Contributors]\n\n---\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## Supports\n\n\u003cbr\u003e\n\n- All common encoders with and without push buttons\n\n- Directly connected encoders (A+B+Button to pins)\n\n- Multiplexed encoders using\n\n    - [`74HC165 (up to 32 encoders)`][MPLEX74165]\n\n    - [`40HC67  (up to 16 encoders)`][MPLEX4067]\n\n    - [`40HC51  (up to 8 encoders)`][MPLEX4051]\n    \n    - [`Encoder Matrix`][MPLEX_Matrix]\n\n    - Easy to adapt for your preferred multiplexer\n\n- Interrupt based or polled readout strategies\n\n\u003cbr\u003e\n\n## Board Compatibility\n\n\u003cbr\u003e\n\n- PJRC Teensy (Teensy-LC, Teensy 3.x, Teensy 4.x, MicroMod)\n\n- SAMD (SEEED XIAO, Nano33 ...)\n\n- 8bit Arduino AVR (UNO, Nano, Mega...)\n\n- ESP32\n\n- Fallback solution for other boards (using slow digitalRead/Write)\n\n\u003cbr\u003e\n\n## Features\n\n- Fully bounce free readout without additional hardware\n\n- Provides hard and cyclic count limits\n\n- Supports and debounces encoder push buttons\n\n- Modern callback system for event driven applications\n\n- Encoders can be connected directly (A / B / Btn connected to pins)\n\n- Encoder connection using various multiplexers (up to 32 encoders on only 4 control pins)\n\n- Schematics and Gerbers available for multiplexed encoder boards (Eagle/KiCad).\n\n\n\u003c!-----------------------------------------------------------------------------\u003e\n\n[PlatformIO]: https://registry.platformio.org/libraries/luni64/EncoderTool/\n[Arduino]: https://www.arduino.cc/reference/en/libraries/encodertool/\n\n[License]: LICENSE\n[MPLEX74165]:Resources/Extras#multiplexing-with-74hc165\n[MPLEX4067]:Resources/Extras#multiplexing-with-cd4067\n[MPLEX4051]:Resources/Extras#multiplexing-with-cd4051\n[MPLEX_Matrix]:Resources/Extras#using-a-directly-connected-encoder-matrix\n\n\n\n[Documentation]: Documentation/Overview.md\n[Contributors]: Documentation/Contributors.md\n[Schematics]: Resources/Extras\n[Examples]: examples\n\n[MPLEX74165]: Resources/Extras/Boards/MPX_74165\n[MPLEX4067]: Resources/Extras/Boards/MPX_4067\n[MPLEX4051]: Resources/Extras/Boards/MPX_4051\n\n\n\u003c!--------------------------------{ Badges }-----------------------------------\u003e\n\n[Badge PlatformIO]: https://img.shields.io/badge/PlatformIO-EncoderTool-fd7e14.svg?style=for-the-badge\n[Badge Arduino]: https://img.shields.io/badge/EncoderTool-00979D.svg?style=for-the-badge\u0026logo=Arduino\u0026logoColor=white\u0026labelColor=gray\n[Badge License]: https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluni64%2Fencodertool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluni64%2Fencodertool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluni64%2Fencodertool/lists"}