Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
GyverLibs committed Jan 3, 2024
1 parent aff09ad commit b7f705a
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 78 deletions.
133 changes: 70 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

# EncButton

|⚠️⚠️⚠️<br>**Новая версия v3 несовместима с предыдущими, смотри [документацию](#docs), [примеры](#example) и краткий [гайд по миграции](#migrate) с v2 на v3!**<br>⚠️⚠️⚠️|
| --- |
| ⚠️⚠️⚠️<br>**Новая версия v3 несовместима с предыдущими, смотри [документацию](#docs), [примеры](#example) и краткий [гайд по миграции](#migrate) с v2 на v3!**<br>⚠️⚠️⚠️ |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|

Лёгкая и очень функциональная библиотека для энкодера с кнопкой, энкодера или кнопки с Arduino
- Кнопка
Expand Down Expand Up @@ -187,67 +187,67 @@
| | 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 | ✔ | ✔ | ✔ | ✔ |
</details>
<details>
<summary>Таблица функций энкодера</summary>
| | 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 | | | ✔ | ✔ |
</details>
<details>
Expand Down Expand Up @@ -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 <EncButton.h>

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();
}
Expand Down Expand Up @@ -1351,12 +1358,12 @@ EncoderT<enc0, enc1> 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()` (сбросить системные флаги обработки, закончить обработку)
Expand Down
2 changes: 2 additions & 0 deletions keywords.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

#######################################
Expand All @@ -34,6 +35,7 @@ EB_CUSTOM_UPTIME KEYWORD1

EB_read KEYWORD2
EB_uptime KEYWORD2
EB_mode KEYWORD2

setHoldTimeout KEYWORD2
setStepTimeout KEYWORD2
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=EncButton
version=3.5.0
version=3.5.1
author=AlexGyver <[email protected]>
maintainer=AlexGyver <[email protected]>
sentence=Light and powerful library for button and encoder operation for Arduino
Expand Down
4 changes: 2 additions & 2 deletions src/core/Button.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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);
}

Expand Down
12 changes: 6 additions & 6 deletions src/core/EncButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
Expand Down Expand Up @@ -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());
}
Expand Down
8 changes: 4 additions & 4 deletions src/core/Encoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

Expand Down Expand Up @@ -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());
}

Expand Down
11 changes: 9 additions & 2 deletions src/core/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
#include <GyverIO.h>
#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
Expand All @@ -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();
Expand Down

0 comments on commit b7f705a

Please sign in to comment.