From b7f705a62399c0471074e9afbd20e43c22a9f23b Mon Sep 17 00:00:00 2001 From: GyverLibs Date: Thu, 4 Jan 2024 02:25:46 +0300 Subject: [PATCH] upd --- README.md | 133 +++++++++++++++++++++++-------------------- keywords.txt | 2 + library.properties | 2 +- src/core/Button.h | 4 +- src/core/EncButton.h | 12 ++-- src/core/Encoder.h | 8 +-- src/core/utils.h | 11 +++- 7 files changed, 94 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index 2c92900..c26f057 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ # EncButton -|⚠️⚠️⚠️
**Новая версия v3 несовместима с предыдущими, смотри [документацию](#docs), [примеры](#example) и краткий [гайд по миграции](#migrate) с v2 на v3!**
⚠️⚠️⚠️| -| --- | +| ⚠️⚠️⚠️
**Новая версия v3 несовместима с предыдущими, смотри [документацию](#docs), [примеры](#example) и краткий [гайд по миграции](#migrate) с v2 на v3!**
⚠️⚠️⚠️ | +|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| Лёгкая и очень функциональная библиотека для энкодера с кнопкой, энкодера или кнопки с Arduino - Кнопка @@ -187,38 +187,38 @@ | | VirtButton | VirtEncButton | Button | EncButton | |-----------------|:----------:|:-------------:|:------:|:---------:| -| read | | | ✔ | | -| readBtn | | | | ✔ | -| tickRaw | ✔ | ✔ | ✔ | ✔ | -| setHoldTimeout | ✔ | ✔ | ✔ | ✔ | -| setStepTimeout | ✔ | ✔ | ✔ | ✔ | -| setClickTimeout | ✔ | ✔ | ✔ | ✔ | -| setDebTimeout | ✔ | ✔ | ✔ | ✔ | -| setBtnLevel | ✔ | ✔ | ✔ | ✔ | -| pressISR | ✔ | ✔ | ✔ | ✔ | -| reset | ✔ | ✔ | ✔ | ✔ | -| clear | ✔ | ✔ | ✔ | ✔ | -| attach | ✔ | ✔ | ✔ | ✔ | -| detach | ✔ | ✔ | ✔ | ✔ | -| press | ✔ | ✔ | ✔ | ✔ | -| release | ✔ | ✔ | ✔ | ✔ | -| click | ✔ | ✔ | ✔ | ✔ | -| pressing | ✔ | ✔ | ✔ | ✔ | -| hold | ✔ | ✔ | ✔ | ✔ | -| holding | ✔ | ✔ | ✔ | ✔ | -| step | ✔ | ✔ | ✔ | ✔ | -| hasClicks | ✔ | ✔ | ✔ | ✔ | -| getClicks | ✔ | ✔ | ✔ | ✔ | -| getSteps | ✔ | ✔ | ✔ | ✔ | -| releaseHold | ✔ | ✔ | ✔ | ✔ | -| releaseStep | ✔ | ✔ | ✔ | ✔ | -| waiting | ✔ | ✔ | ✔ | ✔ | -| busy | ✔ | ✔ | ✔ | ✔ | -| action | ✔ | ✔ | ✔ | ✔ | -| timeout | ✔ | ✔ | ✔ | ✔ | -| pressFor | ✔ | ✔ | ✔ | ✔ | -| holdFor | ✔ | ✔ | ✔ | ✔ | -| stepFor | ✔ | ✔ | ✔ | ✔ | +| read | | | ✔ | | +| readBtn | | | | ✔ | +| tickRaw | ✔ | ✔ | ✔ | ✔ | +| setHoldTimeout | ✔ | ✔ | ✔ | ✔ | +| setStepTimeout | ✔ | ✔ | ✔ | ✔ | +| setClickTimeout | ✔ | ✔ | ✔ | ✔ | +| setDebTimeout | ✔ | ✔ | ✔ | ✔ | +| setBtnLevel | ✔ | ✔ | ✔ | ✔ | +| pressISR | ✔ | ✔ | ✔ | ✔ | +| reset | ✔ | ✔ | ✔ | ✔ | +| clear | ✔ | ✔ | ✔ | ✔ | +| attach | ✔ | ✔ | ✔ | ✔ | +| detach | ✔ | ✔ | ✔ | ✔ | +| press | ✔ | ✔ | ✔ | ✔ | +| release | ✔ | ✔ | ✔ | ✔ | +| click | ✔ | ✔ | ✔ | ✔ | +| pressing | ✔ | ✔ | ✔ | ✔ | +| hold | ✔ | ✔ | ✔ | ✔ | +| holding | ✔ | ✔ | ✔ | ✔ | +| step | ✔ | ✔ | ✔ | ✔ | +| hasClicks | ✔ | ✔ | ✔ | ✔ | +| getClicks | ✔ | ✔ | ✔ | ✔ | +| getSteps | ✔ | ✔ | ✔ | ✔ | +| releaseHold | ✔ | ✔ | ✔ | ✔ | +| releaseStep | ✔ | ✔ | ✔ | ✔ | +| waiting | ✔ | ✔ | ✔ | ✔ | +| busy | ✔ | ✔ | ✔ | ✔ | +| action | ✔ | ✔ | ✔ | ✔ | +| timeout | ✔ | ✔ | ✔ | ✔ | +| pressFor | ✔ | ✔ | ✔ | ✔ | +| holdFor | ✔ | ✔ | ✔ | ✔ | +| stepFor | ✔ | ✔ | ✔ | ✔ |
@@ -226,28 +226,28 @@ | | VirtEncoder | Encoder | VirtEncButton | EncButton | |----------------|:-----------:|:-------:|:-------------:|:---------:| -| readEnc | | | | ✔ | -| initEnc | ✔ | ✔ | ✔ | ✔ | -| setEncReverse | ✔ | ✔ | ✔ | ✔ | -| setEncType | ✔ | ✔ | ✔ | ✔ | -| setEncISR | ✔ | ✔ | ✔ | ✔ | -| clear | ✔ | ✔ | ✔ | ✔ | -| turn | ✔ | ✔ | ✔ | ✔ | -| dir | ✔ | ✔ | ✔ | ✔ | -| tickRaw | ✔ | ✔ | ✔ | ✔ | -| pollEnc | ✔ | ✔ | ✔ | ✔ | -| counter | ✔ | ✔ | ✔ | ✔ | -| setFastTimeout | | | ✔ | ✔ | -| turnH | | | ✔ | ✔ | -| fast | | | ✔ | ✔ | -| right | | | ✔ | ✔ | -| left | | | ✔ | ✔ | -| rightH | | | ✔ | ✔ | -| leftH | | | ✔ | ✔ | -| action | | | ✔ | ✔ | -| timeout | | | ✔ | ✔ | -| attach | | | ✔ | ✔ | -| detach | | | ✔ | ✔ | +| readEnc | | | | ✔ | +| initEnc | ✔ | ✔ | ✔ | ✔ | +| setEncReverse | ✔ | ✔ | ✔ | ✔ | +| setEncType | ✔ | ✔ | ✔ | ✔ | +| setEncISR | ✔ | ✔ | ✔ | ✔ | +| clear | ✔ | ✔ | ✔ | ✔ | +| turn | ✔ | ✔ | ✔ | ✔ | +| dir | ✔ | ✔ | ✔ | ✔ | +| tickRaw | ✔ | ✔ | ✔ | ✔ | +| pollEnc | ✔ | ✔ | ✔ | ✔ | +| counter | ✔ | ✔ | ✔ | ✔ | +| setFastTimeout | | | ✔ | ✔ | +| turnH | | | ✔ | ✔ | +| fast | | | ✔ | ✔ | +| right | | | ✔ | ✔ | +| left | | | ✔ | ✔ | +| rightH | | | ✔ | ✔ | +| leftH | | | ✔ | ✔ | +| action | | | ✔ | ✔ | +| timeout | | | ✔ | ✔ | +| attach | | | ✔ | ✔ | +| detach | | | ✔ | ✔ |
@@ -1217,22 +1217,29 @@ void loop() { - Объявить соответствующий дефайн перед подключением библиотеки - `EB_CUSTOM_READ` - для своей функции чтения пина - `EB_CUSTOM_UPTIME` - для своего аналога millis() + - `EB_CUSTOM_MODE` - для своего аналога pinMode() - Реализовать соответствующую функцию в .cpp или .ino файле - `EB_read` - для своей функции чтения пина - `EB_uptime` - для своего аналога millis() + - `EB_mode` - для своего аналога pinMode Пример: ```cpp #define EB_CUSTOM_READ +#define EB_CUSTOM_MODE #define EB_CUSTOM_UPTIME #include -bool EB_read(const uint8_t pin) { +bool EB_read(uint8_t pin) { return digitalRead(pin); } +void EB_mode(uint8_t pin, uint8_t mode) { + pinMode(pin, mode); +} + uint32_t EB_uptime() { return millis(); } @@ -1351,12 +1358,12 @@ EncoderT e(mode); // + режим пинов энкодера (у ``` ### Функции -| v2 | v3 | -|-----------|--------------| -| `held()` | `hold()` | -| `hold()` | `holding()` | -| `state()` | `pressing()` | -|`setPins()`| `init()` | +| v2 | v3 | +|-------------|--------------| +| `held()` | `hold()` | +| `hold()` | `holding()` | +| `state()` | `pressing()` | +| `setPins()` | `init()` | - Изменился порядок указания пинов (см. доку выше) - `clearFlags()` заменена на `clear()` (сбросить флаги событий) и `reset()` (сбросить системные флаги обработки, закончить обработку) diff --git a/keywords.txt b/keywords.txt index 9b921cf..a87fb08 100644 --- a/keywords.txt +++ b/keywords.txt @@ -26,6 +26,7 @@ EB_FAST_TIME KEYWORD1 EB_NO_GYVER_IO KEYWORD1 EB_CUSTOM_READ KEYWORD1 +EB_CUSTOM_MODE KEYWORD1 EB_CUSTOM_UPTIME KEYWORD1 ####################################### @@ -34,6 +35,7 @@ EB_CUSTOM_UPTIME KEYWORD1 EB_read KEYWORD2 EB_uptime KEYWORD2 +EB_mode KEYWORD2 setHoldTimeout KEYWORD2 setStepTimeout KEYWORD2 diff --git a/library.properties b/library.properties index 84961d6..410de21 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=EncButton -version=3.5.0 +version=3.5.1 author=AlexGyver maintainer=AlexGyver sentence=Light and powerful library for button and encoder operation for Arduino diff --git a/src/core/Button.h b/src/core/Button.h index 4cbae61..f0689c0 100644 --- a/src/core/Button.h +++ b/src/core/Button.h @@ -14,7 +14,7 @@ class Button : public VirtButton { // указать пин и его режим работы void init(uint8_t npin = 0, uint8_t mode = INPUT_PULLUP, uint8_t btnLevel = LOW) { pin = npin; - pinMode(pin, mode); + EB_mode(pin, mode); setBtnLevel(btnLevel); } @@ -47,7 +47,7 @@ class ButtonT : public VirtButton { // указать режим работы пина void init(uint8_t mode = INPUT_PULLUP, uint8_t btnLevel = LOW) { - pinMode(PIN, mode); + EB_mode(PIN, mode); setBtnLevel(btnLevel); } diff --git a/src/core/EncButton.h b/src/core/EncButton.h index 728d0d4..d4d3b2c 100644 --- a/src/core/EncButton.h +++ b/src/core/EncButton.h @@ -17,9 +17,9 @@ class EncButton : public VirtEncButton { e0 = encA; e1 = encB; b = btn; - pinMode(e0, modeEnc); - pinMode(e1, modeEnc); - pinMode(b, modeBtn); + EB_mode(e0, modeEnc); + EB_mode(e1, modeEnc); + EB_mode(b, modeBtn); setBtnLevel(btnLevel); initEnc(readEnc()); } @@ -69,9 +69,9 @@ class EncButtonT : public VirtEncButton { // настроить пины (pinmode энк, pinmode кнопка) void init(uint8_t modeEnc = INPUT, uint8_t modeBtn = INPUT_PULLUP, uint8_t btnLevel = LOW) { - pinMode(ENCA, modeEnc); - pinMode(ENCB, modeEnc); - pinMode(BTN, modeBtn); + EB_mode(ENCA, modeEnc); + EB_mode(ENCB, modeEnc); + EB_mode(BTN, modeBtn); setBtnLevel(btnLevel); initEnc(readEnc()); } diff --git a/src/core/Encoder.h b/src/core/Encoder.h index 01c585b..3509422 100644 --- a/src/core/Encoder.h +++ b/src/core/Encoder.h @@ -16,8 +16,8 @@ class Encoder : public VirtEncoder { void init(uint8_t encA = 0, uint8_t encB = 0, uint8_t mode = INPUT) { e0 = encA; e1 = encB; - pinMode(e0, mode); - pinMode(e1, mode); + EB_mode(e0, mode); + EB_mode(e1, mode); initEnc(readEnc()); } @@ -58,8 +58,8 @@ class EncoderT : public VirtEncoder { // указать режим работы пинов void init(uint8_t mode = INPUT) { - pinMode(ENCA, mode); - pinMode(ENCB, mode); + EB_mode(ENCA, mode); + EB_mode(ENCB, mode); initEnc(readEnc()); } diff --git a/src/core/utils.h b/src/core/utils.h index b9e8a12..9a5b91a 100644 --- a/src/core/utils.h +++ b/src/core/utils.h @@ -5,13 +5,14 @@ #include #endif -bool EB_read(const uint8_t pin); +bool EB_read(uint8_t pin); +void EB_mode(uint8_t pin, uint8_t mode); uint32_t EB_uptime(); // ==================== #ifndef EB_CUSTOM_READ -bool EB_read(const uint8_t pin) { +bool EB_read(uint8_t pin) { #ifndef EB_NO_GYVER_IO return gio::read(pin); #else @@ -20,6 +21,12 @@ bool EB_read(const uint8_t pin) { } #endif +#ifndef EB_CUSTOM_MODE +void EB_mode(uint8_t pin, uint8_t mode) { + pinMode(pin, mode); +} +#endif + #ifndef EB_CUSTOM_UPTIME uint32_t EB_uptime() { return millis();