@@ -163,14 +163,17 @@ int8_t getDir(); // направление последнего поворо
163
163
int counter; // доступ к счётчику энкодера
164
164
165
165
// ================ BUTTON ================
166
+ bool state(); // текущий статус кнопки
166
167
bool press(); // кнопка нажата
167
168
bool release(); // кнопка отпущена
168
169
bool click(); // клик
169
170
bool held(); // было удержание (однократное срабатывание)
170
171
bool hold(); // удерживается (постоянное срабатывание)
171
172
bool step(); // режим импульсного удержания
173
+ bool step(uint8_t clicks); // режим импульсного удержания с предварительным накликиванием
172
174
bool releaseStep(); // отпущена после режима step
173
- bool state(); // текущий статус кнопки
175
+ bool releaseStep(uint8_t clicks); // отпущена после режима step с предварительным накликиванием
176
+
174
177
uint8_t clicks; // доступ к счётчику кликов
175
178
uint8_t hasClicks(); // вернёт количество кликов, если они есть
176
179
bool hasClicks(uint8_t num); // проверка на наличие указанного количества кликов
@@ -223,6 +226,7 @@ void pullUp(); // здесь не реализована!
223
226
- Точный алгоритм активируется добавлением ` #define EB_BETTER_ENC ` перед подключением библиотеки
224
227
- Версия библиотеки * EncButton2.h* хранит номера пинов в классе. Используйте эту версию для создания массива объектов EncButton!
225
228
229
+
226
230
<a id =" example " ></a >
227
231
## Примеры
228
232
### Полное демо tick
@@ -320,6 +324,57 @@ void loop() {
320
324
}
321
325
```
322
326
327
+ ### Одна кнопка управляет несколькими переменными
328
+ ``` cpp
329
+ // используем одну КНОПКУ для удобного изменения трёх переменных
330
+ // первая - один клик, затем удержание (нажал-отпустил-нажал-держим)
331
+ // вторая - два клика, затем удержание
332
+ // третья - три клика, затем удержание
333
+ // смотри монитор порта
334
+
335
+ #include < EncButton.h>
336
+ EncButton<EB_TICK, 3 > btn;
337
+
338
+ // переменные для изменения
339
+ int val_a, val_b, val_c;
340
+
341
+ // шаги изменения (signed)
342
+ int8_t step_a = 1 ;
343
+ int8_t step_b = 5 ;
344
+ int8_t step_c = 10 ;
345
+
346
+ void setup () {
347
+ Serial.begin(9600);
348
+ }
349
+
350
+ void loop () {
351
+ btn.tick();
352
+
353
+ // передаём количество предварительных кликов
354
+ if (btn.step(1)) {
355
+ val_a += step_a;
356
+ Serial.print("val_a: ");
357
+ Serial.println(val_a);
358
+ }
359
+ if (btn.step(2)) {
360
+ val_b += step_b;
361
+ Serial.print("val_b: ");
362
+ Serial.println(val_b);
363
+ }
364
+ if (btn.step(3)) {
365
+ val_c += step_c;
366
+ Serial.print("val_c: ");
367
+ Serial.println(val_c);
368
+ }
369
+
370
+ // разворачиваем шаг для изменения в обратную сторону
371
+ // передаём количество предварительных кликов
372
+ if (btn.releaseStep(1)) step_a = -step_a;
373
+ if (btn.releaseStep(2)) step_b = -step_b;
374
+ if (btn.releaseStep(3)) step_c = -step_c;
375
+ }
376
+ ```
377
+
323
378
<a id =" versions " ></a >
324
379
## Версии
325
380
- v1.1 - пуллап отдельныи методом
@@ -341,6 +396,7 @@ void loop() {
341
396
- v1.14 - добавлена releaseStep(). Отпускание кнопки внесено в дебаунс
342
397
- v1.15 - добавлен setPins() для EncButton2
343
398
- v1.16 - добавлен режим EB_HALFSTEP_ENC для полушаговых энкодеров
399
+ - v1.17 - добавлен step с предварительными кликами
344
400
345
401
<a id =" feedback " ></a >
346
402
## Баги и обратная связь
0 commit comments