|
9 | 9 | # EncButton |
10 | 10 |
|
11 | 11 | | ⚠️⚠️⚠️<br>**Новая версия v3 несовместима с предыдущими, смотри [документацию](#docs), [примеры](#example) и краткий [гайд по миграции](#migrate) с v2 на v3!**<br>⚠️⚠️⚠️ | |
12 | | -|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 12 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
13 | 13 |
|
14 | 14 | Лёгкая и очень функциональная библиотека для энкодера с кнопкой, энкодера или кнопки с Arduino |
15 | 15 | - Кнопка |
|
181 | 181 | <details> |
182 | 182 | <summary>Таблица функций кнопки</summary> |
183 | 183 |
|
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 | ✔ | ✔ | ✔ | ✔ | |
219 | 220 | </details> |
220 | 221 |
|
221 | 222 | <details> |
222 | 223 | <summary>Таблица функций энкодера</summary> |
223 | 224 |
|
224 | 225 | | | VirtEncoder | Encoder | VirtEncButton | EncButton | |
225 | | -|----------------|:-----------:|:-------:|:-------------:|:---------:| |
| 226 | +| -------------- | :---------: | :-----: | :-----------: | :-------: | |
226 | 227 | | readEnc | | | | ✔ | |
227 | 228 | | initEnc | ✔ | ✔ | ✔ | ✔ | |
228 | 229 | | setEncReverse | ✔ | ✔ | ✔ | ✔ | |
@@ -281,6 +282,9 @@ void reset(); |
281 | 282 | // принудительно сбросить флаги событий |
282 | 283 | void clear(); |
283 | 284 |
|
| 285 | +// игнорировать все события до отпускания кнопки |
| 286 | +void skipEvents(); |
| 287 | +
|
284 | 288 | // ================ ОБРАБОТКА ================ |
285 | 289 | // обработка кнопки значением |
286 | 290 | bool tick(bool s); |
@@ -1310,6 +1314,20 @@ void loop() { |
1310 | 1314 | } |
1311 | 1315 | ``` |
1312 | 1316 |
|
| 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 | + |
1313 | 1331 | <a id="examples-mini"></a> |
1314 | 1332 |
|
1315 | 1333 | ### Мини примеры, сценарии |
@@ -1424,7 +1442,7 @@ EncoderT<enc0, enc1> e(mode); // + режим пинов энкодера (у |
1424 | 1442 |
|
1425 | 1443 | ### Функции |
1426 | 1444 | | v2 | v3 | |
1427 | | -|-------------|--------------| |
| 1445 | +| ----------- | ------------ | |
1428 | 1446 | | `held()` | `hold()` | |
1429 | 1447 | | `hold()` | `holding()` | |
1430 | 1448 | | `state()` | `pressing()` | |
@@ -1773,6 +1791,7 @@ void loop() { |
1773 | 1791 | - Добавлено количество кликов в опрос press/release/click/pressing |
1774 | 1792 | - v3.5.5 - коллбэк на базе std::function для ESP |
1775 | 1793 | - v3.5.8 - добавлен метод releaseHoldStep() |
| 1794 | +- v3.5.11 - добавлен метод skipEvents() для игнорирования событий кнопки в сложных сценариях использования |
1776 | 1795 | |
1777 | 1796 | <a id="feedback"></a> |
1778 | 1797 | ## Баги и обратная связь |
|
0 commit comments