|
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