You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Основная идея работы: "тикнули", а затем вручную через условия опрашиваем нужные действия кнопки/энкодера. Почти все функции опроса имеют механизм "однократного срабатывания", то есть возвращают `true` и автоматически сбрасываются в `false` до наступления следующего события. Таким образом конструкция `if (btn.click())` позволяет выполнить какой-то блок кода однократно по клику. Подробнее разберём ниже.
261
261
262
262
#### Кнопка
263
-
-`press()` - кнопка была нажата (с антидребезгом). *[однократно вернёт true]*
263
+
-`press()` - кнопка была нажата. *[однократно вернёт true]*
264
264
-`release()` - кнопка была отпущена. *[однократно вернёт true]*
265
-
-`click()` - кнопка была кликнута, т.е. коротко нажата и отпущена (удерживалась больше времени антидребезга, но меньше таймаута удержания). *[однократно вернёт true]*
-`hold()` - кнопка была удержана дольше `setHoldTimeout()` таймаута. *[возвращает true, пока удерживается]*
268
-
-`step()` - режим "импульсного удержания": после удержания кнопки дольше таймаута данная функция *[возвращает true с периодом EB_STEP]*. Удобно использовать для пошагового изменения какой-то величины в программе: `if (btn.step()) val++;`.
269
-
-`step(clicks)` - всё то же самое, но функция принимает количество кликов, сделанных до удержания. Это позволяет очень просто контролировать несколько величин одной кнопкой. См. пример *StepMode*.
270
-
-`releaseStep()` - кнопка была отпущена после импульсного удержания. Может использоваться для изменения знака инкремента переменной: удерживаем - переменная увеличивается, отпустили, удерживаем ещё раз - уменьшается. См. пример *StepMode*. *[однократно вернёт true]*
271
-
-`releaseStep(clicks)` - всё то же самое, но функция принимает количество кликов, сделанных до удержания. См. пример *StepMode*. *[однократно вернёт true]*
265
+
-`click()` - кнопка была кликнута, т.е. нажата и отпущена до таймаута удержания. *[однократно вернёт true]*
-`held(clicks)` - то же самое, но функция принимает количество кликов, сделанных до удержания. Примечание: held() без аргумента перехватит вызов! См. пример *preClicks*. *[однократно вернёт true]*
268
+
-`hold()` - кнопка была удержана дольше таймаута удержания. *[возвращает true, пока удерживается]*
269
+
-`hold(clicks)` - то же самое, но функция принимает количество кликов, сделанных до удержания. Примечание: hold() без аргумента перехватит вызов! См. пример *preClicks*. *[возвращает true, пока удерживается]*
270
+
-`step()` - режим "импульсного удержания": после удержания кнопки дольше таймаута данная функция *[возвращает true с периодом EB_STEP]*. Удобно использовать для пошагового изменения переменных: `if (btn.step()) val++;`.
271
+
-`step(clicks)` - то же самое, но функция принимает количество кликов, сделанных до удержания. Примечание: step() без аргумента перехватит вызов! См. пример *StepMode* и *preClicks*.
272
+
-`releaseStep()` - кнопка была отпущена после импульсного удержания. Может использоваться для изменения знака инкремента переменной. См. пример *StepMode*. *[однократно вернёт true]*
273
+
-`releaseStep(clicks)` - то же самое, но функция принимает количество кликов, сделанных до удержания. Примечание: releaseStep() без аргумента перехватит вызов! См. пример *StepMode* и *preClicks*. *[однократно вернёт true]*
272
274
-`hasClicks(clicks)` - было сделано указанное количество кликов с периодом менее *EB_CLICK*. *[однократно вернёт true]*
273
275
-`state()` - возвращает теукщее состояние кнопки (сигнал с пина, без антидребезга): `true` - нажата, `false` - не нажата.
274
276
-`hasClicks()` - вернёт количество кликов, сделанных с периодом менее *EB_CLICK*. В противном случае вернёт 0.
275
277
-`uint8_t clicks` - публичная переменная (член класса), хранит количество сделанных кликов с периодом менее *EB_CLICK*. Сбрасывается в 0 после нового клика.
278
+

276
279
277
280
#### Энкодер
278
281
-`turn()` - поворот на один щелчок в любую сторону. *[однократно вернёт true]*
@@ -500,6 +503,7 @@ void loop() {
500
503
- v1.15 - добавлен setPins() для EncButton2
501
504
- v1.16 - добавлен режим EB_HALFSTEP_ENC для полушаговых энкодеров
502
505
- v1.17 - добавлен step с предварительными кликами
506
+
- v1.18 - не считаем клики после активации step. held() и hold() тоже могут принимать предварительные клики. Переделан и улучшен дебаунс
0 commit comments