Skip to content

Commit 164471b

Browse files
committed
upd
1 parent 8cac3b6 commit 164471b

File tree

3 files changed

+63
-39
lines changed

3 files changed

+63
-39
lines changed

README.md

Lines changed: 57 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# EncButton
1010

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

1414
Лёгкая и очень функциональная библиотека для энкодера с кнопкой, энкодера или кнопки с Arduino
1515
- Кнопка
@@ -181,48 +181,49 @@
181181
<details>
182182
<summary>Таблица функций кнопки</summary>
183183
184-
| | VirtButton | VirtEncButton | Button | EncButton |
185-
|-----------------|:----------:|:-------------:|:------:|:---------:|
186-
| read | | | ✔ | |
187-
| readBtn | | | | ✔ |
188-
| tickRaw | ✔ | ✔ | ✔ | ✔ |
189-
| setHoldTimeout | ✔ | ✔ | ✔ | ✔ |
190-
| setStepTimeout | ✔ | ✔ | ✔ | ✔ |
191-
| setClickTimeout | ✔ | ✔ | ✔ | ✔ |
192-
| setDebTimeout | ✔ | ✔ | ✔ | ✔ |
193-
| setBtnLevel | ✔ | ✔ | ✔ | ✔ |
194-
| pressISR | ✔ | ✔ | ✔ | ✔ |
195-
| reset | ✔ | ✔ | ✔ | ✔ |
196-
| clear | ✔ | ✔ | ✔ | ✔ |
197-
| attach | ✔ | ✔ | ✔ | ✔ |
198-
| detach | ✔ | ✔ | ✔ | ✔ |
199-
| press | ✔ | ✔ | ✔ | ✔ |
200-
| release | ✔ | ✔ | ✔ | ✔ |
201-
| click | ✔ | ✔ | ✔ | ✔ |
202-
| pressing | ✔ | ✔ | ✔ | ✔ |
203-
| hold | ✔ | ✔ | ✔ | ✔ |
204-
| holding | ✔ | ✔ | ✔ | ✔ |
205-
| step | ✔ | ✔ | ✔ | ✔ |
206-
| hasClicks | ✔ | ✔ | ✔ | ✔ |
207-
| getClicks | ✔ | ✔ | ✔ | ✔ |
208-
| getSteps | ✔ | ✔ | ✔ | ✔ |
209-
| releaseHold | ✔ | ✔ | ✔ | ✔ |
210-
| releaseStep | ✔ | ✔ | ✔ | ✔ |
211-
| releaseHoldStep | ✔ | ✔ | ✔ | ✔ |
212-
| waiting | ✔ | ✔ | ✔ | ✔ |
213-
| busy | ✔ | ✔ | ✔ | ✔ |
214-
| action | ✔ | ✔ | ✔ | ✔ |
215-
| timeout | ✔ | ✔ | ✔ | ✔ |
216-
| pressFor | ✔ | ✔ | ✔ | ✔ |
217-
| holdFor | ✔ | ✔ | ✔ | ✔ |
218-
| stepFor | ✔ | ✔ | ✔ | ✔ |
184+
| | VirtButton | VirtEncButton | Button | EncButton |
185+
| ----------------- | :--------: | :-----------: | :----: | :-------: |
186+
| read | | | ✔ | |
187+
| readBtn | | | | ✔ |
188+
| tickRaw | ✔ | ✔ | ✔ | ✔ |
189+
| setHoldTimeout | ✔ | ✔ | ✔ | ✔ |
190+
| setStepTimeout | ✔ | ✔ | ✔ | ✔ |
191+
| setClickTimeout | ✔ | ✔ | ✔ | ✔ |
192+
| setDebTimeout | ✔ | ✔ | ✔ | ✔ |
193+
| setBtnLevel | ✔ | ✔ | ✔ | ✔ |
194+
| pressISR | ✔ | ✔ | ✔ | ✔ |
195+
| reset | ✔ | ✔ | ✔ | ✔ |
196+
| clear | ✔ | ✔ | ✔ | ✔ |
197+
| skipEvents | ✔ | ✔ | ✔ | ✔ |
198+
| attach | ✔ | ✔ | ✔ | ✔ |
199+
| detach | ✔ | ✔ | ✔ | ✔ |
200+
| press | ✔ | ✔ | ✔ | ✔ |
201+
| release | ✔ | ✔ | ✔ | ✔ |
202+
| click | ✔ | ✔ | ✔ | ✔ |
203+
| pressing | ✔ | ✔ | ✔ | ✔ |
204+
| hold | ✔ | ✔ | ✔ | ✔ |
205+
| holding | ✔ | ✔ | ✔ | ✔ |
206+
| step | ✔ | ✔ | ✔ | ✔ |
207+
| hasClicks | ✔ | ✔ | ✔ | ✔ |
208+
| getClicks | ✔ | ✔ | ✔ | ✔ |
209+
| getSteps | ✔ | ✔ | ✔ | ✔ |
210+
| releaseHold | ✔ | ✔ | ✔ | ✔ |
211+
| releaseStep | ✔ | ✔ | ✔ | ✔ |
212+
| releaseHoldStep | ✔ | ✔ | ✔ | ✔ |
213+
| waiting | ✔ | ✔ | ✔ | ✔ |
214+
| busy | ✔ | ✔ | ✔ | ✔ |
215+
| action | ✔ | ✔ | ✔ | ✔ |
216+
| timeout | ✔ | ✔ | ✔ | ✔ |
217+
| pressFor | ✔ | ✔ | ✔ | ✔ |
218+
| holdFor | ✔ | ✔ | ✔ | ✔ |
219+
| stepFor | ✔ | ✔ | ✔ | ✔ |
219220
</details>
220221
221222
<details>
222223
<summary>Таблица функций энкодера</summary>
223224
224225
| | VirtEncoder | Encoder | VirtEncButton | EncButton |
225-
|----------------|:-----------:|:-------:|:-------------:|:---------:|
226+
| -------------- | :---------: | :-----: | :-----------: | :-------: |
226227
| readEnc | | | | ✔ |
227228
| initEnc | ✔ | ✔ | ✔ | ✔ |
228229
| setEncReverse | ✔ | ✔ | ✔ | ✔ |
@@ -281,6 +282,9 @@ void reset();
281282
// принудительно сбросить флаги событий
282283
void clear();
283284
285+
// игнорировать все события до отпускания кнопки
286+
void skipEvents();
287+
284288
// ================ ОБРАБОТКА ================
285289
// обработка кнопки значением
286290
bool tick(bool s);
@@ -1310,6 +1314,20 @@ void loop() {
13101314
}
13111315
```
13121316

1317+
### Пропуск событий
1318+
EncButton позволяет кнопке работать в паре с энкодером для корректного отслеживания *нажатых поворотов* - при нажатом повороте события с кнопки будут пропущены, т.е. не обработается удержание и клик. Допустим кнопок несколько: они могут выполнять действия как сами по себе, так и в паре с энкодером (кнопка зажата и крутится энкодер, в программе меняется выбранное кнопкой значение). Чтобы при удержании кнопка не генерировала события (удержание, степ, клики...) можно включить пропуск событий. Он будет действовать **до отпускания кнопки**:
1319+
1320+
```cpp
1321+
if (btn.pressing() && enc.turn()) {
1322+
btn.skipEvents(); // зафиксирован поворот. Пропускаем события
1323+
// нажатый поворот
1324+
}
1325+
1326+
if (btn.click()) {
1327+
// просто клик
1328+
}
1329+
```
1330+
13131331
<a id="examples-mini"></a>
13141332

13151333
### Мини примеры, сценарии
@@ -1424,7 +1442,7 @@ EncoderT<enc0, enc1> e(mode); // + режим пинов энкодера (у
14241442
14251443
### Функции
14261444
| v2 | v3 |
1427-
|-------------|--------------|
1445+
| ----------- | ------------ |
14281446
| `held()` | `hold()` |
14291447
| `hold()` | `holding()` |
14301448
| `state()` | `pressing()` |
@@ -1773,6 +1791,7 @@ void loop() {
17731791
- Добавлено количество кликов в опрос press/release/click/pressing
17741792
- v3.5.5 - коллбэк на базе std::function для ESP
17751793
- v3.5.8 - добавлен метод releaseHoldStep()
1794+
- v3.5.11 - добавлен метод skipEvents() для игнорирования событий кнопки в сложных сценариях использования
17761795
17771796
<a id="feedback"></a>
17781797
## Баги и обратная связь

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=EncButton
2-
version=3.5.10
2+
version=3.5.11
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Light and powerful library for button and encoder operation for Arduino

src/core/VirtButton.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ class VirtButton {
128128
}
129129
}
130130

131+
// игнорировать все события до отпускания кнопки
132+
void skipEvents() {
133+
bf.set(EB_EHLD);
134+
}
135+
131136
// подключить функцию-обработчик событий (вида void f())
132137
void attach(ActionHandler handler) {
133138
#ifndef EB_NO_CALLBACK

0 commit comments

Comments
 (0)