Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
GyverLibs committed Jul 11, 2024
1 parent 8cac3b6 commit 164471b
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 39 deletions.
95 changes: 57 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# EncButton

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

Лёгкая и очень функциональная библиотека для энкодера с кнопкой, энкодера или кнопки с Arduino
- Кнопка
Expand Down Expand Up @@ -181,48 +181,49 @@
<details>
<summary>Таблица функций кнопки</summary>
| | 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 | ✔ | ✔ | ✔ | ✔ |
| releaseHoldStep | ✔ | ✔ | ✔ | ✔ |
| waiting | ✔ | ✔ | ✔ | ✔ |
| busy | ✔ | ✔ | ✔ | ✔ |
| action | ✔ | ✔ | ✔ | ✔ |
| timeout | ✔ | ✔ | ✔ | ✔ |
| pressFor | ✔ | ✔ | ✔ | ✔ |
| holdFor | ✔ | ✔ | ✔ | ✔ |
| stepFor | ✔ | ✔ | ✔ | ✔ |
| | VirtButton | VirtEncButton | Button | EncButton |
| ----------------- | :--------: | :-----------: | :----: | :-------: |
| read | | | ✔ | |
| readBtn | | | | ✔ |
| tickRaw | ✔ | ✔ | ✔ | ✔ |
| setHoldTimeout | ✔ | ✔ | ✔ | ✔ |
| setStepTimeout | ✔ | ✔ | ✔ | ✔ |
| setClickTimeout | ✔ | ✔ | ✔ | ✔ |
| setDebTimeout | ✔ | ✔ | ✔ | ✔ |
| setBtnLevel | ✔ | ✔ | ✔ | ✔ |
| pressISR | ✔ | ✔ | ✔ | ✔ |
| reset | ✔ | ✔ | ✔ | ✔ |
| clear | ✔ | ✔ | ✔ | ✔ |
| skipEvents | ✔ | ✔ | ✔ | ✔ |
| attach | ✔ | ✔ | ✔ | ✔ |
| detach | ✔ | ✔ | ✔ | ✔ |
| press | ✔ | ✔ | ✔ | ✔ |
| release | ✔ | ✔ | ✔ | ✔ |
| click | ✔ | ✔ | ✔ | ✔ |
| pressing | ✔ | ✔ | ✔ | ✔ |
| hold | ✔ | ✔ | ✔ | ✔ |
| holding | ✔ | ✔ | ✔ | ✔ |
| step | ✔ | ✔ | ✔ | ✔ |
| hasClicks | ✔ | ✔ | ✔ | ✔ |
| getClicks | ✔ | ✔ | ✔ | ✔ |
| getSteps | ✔ | ✔ | ✔ | ✔ |
| releaseHold | ✔ | ✔ | ✔ | ✔ |
| releaseStep | ✔ | ✔ | ✔ | ✔ |
| releaseHoldStep | ✔ | ✔ | ✔ | ✔ |
| waiting | ✔ | ✔ | ✔ | ✔ |
| busy | ✔ | ✔ | ✔ | ✔ |
| action | ✔ | ✔ | ✔ | ✔ |
| timeout | ✔ | ✔ | ✔ | ✔ |
| pressFor | ✔ | ✔ | ✔ | ✔ |
| holdFor | ✔ | ✔ | ✔ | ✔ |
| stepFor | ✔ | ✔ | ✔ | ✔ |
</details>
<details>
<summary>Таблица функций энкодера</summary>
| | VirtEncoder | Encoder | VirtEncButton | EncButton |
|----------------|:-----------:|:-------:|:-------------:|:---------:|
| -------------- | :---------: | :-----: | :-----------: | :-------: |
| readEnc | | | | ✔ |
| initEnc | ✔ | ✔ | ✔ | ✔ |
| setEncReverse | ✔ | ✔ | ✔ | ✔ |
Expand Down Expand Up @@ -281,6 +282,9 @@ void reset();
// принудительно сбросить флаги событий
void clear();
// игнорировать все события до отпускания кнопки
void skipEvents();
// ================ ОБРАБОТКА ================
// обработка кнопки значением
bool tick(bool s);
Expand Down Expand Up @@ -1310,6 +1314,20 @@ void loop() {
}
```

### Пропуск событий
EncButton позволяет кнопке работать в паре с энкодером для корректного отслеживания *нажатых поворотов* - при нажатом повороте события с кнопки будут пропущены, т.е. не обработается удержание и клик. Допустим кнопок несколько: они могут выполнять действия как сами по себе, так и в паре с энкодером (кнопка зажата и крутится энкодер, в программе меняется выбранное кнопкой значение). Чтобы при удержании кнопка не генерировала события (удержание, степ, клики...) можно включить пропуск событий. Он будет действовать **до отпускания кнопки**:

```cpp
if (btn.pressing() && enc.turn()) {
btn.skipEvents(); // зафиксирован поворот. Пропускаем события
// нажатый поворот
}

if (btn.click()) {
// просто клик
}
```

<a id="examples-mini"></a>

### Мини примеры, сценарии
Expand Down Expand Up @@ -1424,7 +1442,7 @@ EncoderT<enc0, enc1> e(mode); // + режим пинов энкодера (у
### Функции
| v2 | v3 |
|-------------|--------------|
| ----------- | ------------ |
| `held()` | `hold()` |
| `hold()` | `holding()` |
| `state()` | `pressing()` |
Expand Down Expand Up @@ -1773,6 +1791,7 @@ void loop() {
- Добавлено количество кликов в опрос press/release/click/pressing
- v3.5.5 - коллбэк на базе std::function для ESP
- v3.5.8 - добавлен метод releaseHoldStep()
- v3.5.11 - добавлен метод skipEvents() для игнорирования событий кнопки в сложных сценариях использования
<a id="feedback"></a>
## Баги и обратная связь
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.10
version=3.5.11
author=AlexGyver <[email protected]>
maintainer=AlexGyver <[email protected]>
sentence=Light and powerful library for button and encoder operation for Arduino
Expand Down
5 changes: 5 additions & 0 deletions src/core/VirtButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ class VirtButton {
}
}

// игнорировать все события до отпускания кнопки
void skipEvents() {
bf.set(EB_EHLD);
}

// подключить функцию-обработчик событий (вида void f())
void attach(ActionHandler handler) {
#ifndef EB_NO_CALLBACK
Expand Down

0 comments on commit 164471b

Please sign in to comment.