Skip to content

Commit 28dca75

Browse files
committed
upd
1 parent 545ee18 commit 28dca75

File tree

3 files changed

+44
-28
lines changed

3 files changed

+44
-28
lines changed

README.md

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -295,57 +295,49 @@ bool tickRaw(bool s);
295295
// ================== ОПРОС ==================
296296
// кнопка нажата [событие]
297297
bool press();
298+
bool press(uint8_t clicks);
298299
299300
// кнопка отпущена (в любом случае) [событие]
300301
bool release();
302+
bool release(uint8_t clicks);
301303
302304
// клик по кнопке (отпущена без удержания) [событие]
303305
bool click();
306+
bool click(uint8_t clicks);
304307
305308
// кнопка зажата (между press() и release()) [состояние]
306309
bool pressing();
310+
bool pressing(uint8_t clicks);
307311
308312
// кнопка была удержана (больше таймаута) [событие]
309313
bool hold();
310-
311-
// кнопка была удержана (больше таймаута) с предварительными кликами [событие]
312-
bool hold(uint8_t num);
314+
bool hold(uint8_t clicks);
313315
314316
// кнопка удерживается (больше таймаута) [состояние]
315317
bool holding();
316-
317-
// кнопка удерживается (больше таймаута) с предварительными кликами [состояние]
318-
bool holding(uint8_t num);
318+
bool holding(uint8_t clicks);
319319
320320
// импульсное удержание [событие]
321321
bool step();
322-
323-
// импульсное удержание с предварительными кликами [событие]
324-
bool step(uint8_t num);
322+
bool step(uint8_t clicks);
325323
326324
// зафиксировано несколько кликов [событие]
327325
bool hasClicks();
328-
329-
// зафиксировано указанное количество кликов [событие]
330-
bool hasClicks(uint8_t num);
331-
332-
// получить количество кликов
333-
uint8_t getClicks();
334-
335-
// получить количество степов
336-
uint16_t getSteps();
326+
bool hasClicks(uint8_t clicks);
337327
338328
// кнопка отпущена после удержания [событие]
339329
bool releaseHold();
340-
341-
// кнопка отпущена после удержания с предварительными кликами [событие]
342-
bool releaseHold(uint8_t num);
330+
bool releaseHold(uint8_t clicks);
343331
344332
// кнопка отпущена после импульсного удержания [событие]
345333
bool releaseStep();
334+
bool releaseStep(uint8_t clicks);
335+
336+
// получить количество кликов
337+
uint8_t getClicks();
346338
347-
// кнопка отпущена после импульсного удержания с предварительными кликами [событие]
348-
bool releaseStep(uint8_t num);
339+
// получить количество степов
340+
uint16_t getSteps();
349341
350342
// кнопка ожидает повторных кликов (между click() и hasClicks()) [состояние]
351343
bool waiting();
@@ -801,6 +793,8 @@ void loop() {
801793
- Если ожидается `timeout` - событие timeout с указанным периодом от текущего момента
802794
- Обработка кнопки в прерывании сообщает библиотеке о факте нажатия, вся остальная обработка выполняется штатно в `tick()`
803795

796+
> Отличие `click(n)` от `hasClicks(n)`: `click(n)` вернёт `true` в любом случае при совпадении количества кликов, даже если будет сделано больше кликов. `hasClicks(n)` вернёт `true` только в том случае, если было сделано ровно указанное количество кликов и больше кликов не было!
797+
804798
> Лучше один раз увидеть, чем сто раз прочитать. Запусти пример demo и понажимай на кнопку, или попробуй [онлайн-симуляцию в Wokwi](https://wokwi.com/projects/373591584298469377)
805799
806800
##### Click
@@ -1769,6 +1763,8 @@ void loop() {
17691763
- Оптимизация
17701764
- Упрощена замена кастомных функций
17711765
- Исправлена ошибка компиляции при использовании библиотеки в нескольких .cpp файлах
1766+
- v3.5.3
1767+
- Добавлено количество кликов в опрос press/release/click/pressing
17721768
17731769
<a id="feedback"></a>
17741770
## Баги и обратная связь

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.2
2+
version=3.5.3
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: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,29 +139,49 @@ class VirtButton {
139139
return read_bf(EB_PRS_R);
140140
}
141141

142+
// кнопка нажата с предварительными кликами [событие]
143+
bool press(const uint8_t& num) {
144+
return (clicks == num) && press();
145+
}
146+
142147
// кнопка отпущена (в любом случае) [событие]
143148
bool release() {
144149
return eq_bf(EB_REL_R | EB_REL, EB_REL_R | EB_REL);
145150
}
146151

152+
// кнопка отпущена (в любом случае) с предварительными кликами [событие]
153+
bool release(const uint8_t& num) {
154+
return (clicks == num) && release();
155+
}
156+
147157
// клик по кнопке (отпущена без удержания) [событие]
148158
bool click() {
149159
return eq_bf(EB_REL_R | EB_REL | EB_HLD, EB_REL_R);
150160
}
151161

162+
// клик по кнопке (отпущена без удержания) с предварительными кликами [событие]
163+
bool click(const uint8_t& num) {
164+
return (clicks == num) && click();
165+
}
166+
152167
// кнопка зажата (между press() и release()) [состояние]
153168
bool pressing() {
154169
return read_bf(EB_PRS);
155170
}
156171

172+
// кнопка зажата (между press() и release()) с предварительными кликами [состояние]
173+
bool pressing(const uint8_t& num) {
174+
return (clicks == num) && pressing();
175+
}
176+
157177
// кнопка была удержана (больше таймаута) [событие]
158178
bool hold() {
159179
return read_bf(EB_HLD_R);
160180
}
161181

162182
// кнопка была удержана (больше таймаута) с предварительными кликами [событие]
163183
bool hold(const uint8_t& num) {
164-
return clicks == num && hold();
184+
return (clicks == num) && hold();
165185
}
166186

167187
// кнопка удерживается (больше таймаута) [состояние]
@@ -171,7 +191,7 @@ class VirtButton {
171191

172192
// кнопка удерживается (больше таймаута) с предварительными кликами [состояние]
173193
bool holding(const uint8_t& num) {
174-
return clicks == num && holding();
194+
return (clicks == num) && holding();
175195
}
176196

177197
// импульсное удержание [событие]
@@ -181,7 +201,7 @@ class VirtButton {
181201

182202
// импульсное удержание с предварительными кликами [событие]
183203
bool step(const uint8_t& num) {
184-
return clicks == num && step();
204+
return (clicks == num) && step();
185205
}
186206

187207
// зафиксировано несколько кликов [событие]
@@ -191,7 +211,7 @@ class VirtButton {
191211

192212
// зафиксировано указанное количество кликов [событие]
193213
bool hasClicks(const uint8_t& num) {
194-
return clicks == num && hasClicks();
214+
return (clicks == num) && hasClicks();
195215
}
196216

197217
// получить количество кликов

0 commit comments

Comments
 (0)