Skip to content

Commit c78f375

Browse files
committed
upd
1 parent f729267 commit c78f375

File tree

5 files changed

+27
-13
lines changed

5 files changed

+27
-13
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Foo](https://img.shields.io/badge/Version-1.20-brightgreen.svg?style=flat-square)](#versions)
1+
[![Foo](https://img.shields.io/badge/Version-1.21-brightgreen.svg?style=flat-square)](#versions)
22
[![Foo](https://img.shields.io/badge/Website-AlexGyver.ru-blue.svg?style=flat-square)](https://alexgyver.ru/)
33
[![Foo](https://img.shields.io/badge/%E2%82%BD$%E2%82%AC%20%D0%9D%D0%B0%20%D0%BF%D0%B8%D0%B2%D0%BE-%D1%81%20%D1%80%D1%8B%D0%B1%D0%BA%D0%BE%D0%B9-orange.svg?style=flat-square)](https://alexgyver.ru/support_alex/)
44

@@ -251,7 +251,7 @@ void setPins(uint8_t mode, uint8_t P1, uint8_t P2, uint8_t P3); // наст
251251
// энкодер
252252
#define EB_FAST 30 // таймаут быстрого поворота, мс
253253
#define EB_BETTER_ENC // улучшенный алгоритм опроса энкодера. Добавит 16 байт SRAM при подключении библиотеки
254-
#define EB_HALFSTEP_ENC // режим опроса полушагового энкодера (включи, если твой энкодер делает два тика за один)
254+
#define EB_HALFSTEP_ENC // режим опроса полушагового энкодера (включи, если твой энкодер делает один "поворот" за два щелчка)
255255
256256
// кнопка
257257
#define EB_DEB 50 // дебаунс кнопки, мс
@@ -532,6 +532,7 @@ void loop() {
532532
- v1.19.3 - сделал высокий уровень кнопки по умолчанию в виртуальном режиме
533533
- v1.19.4 - фикс EncButton2
534534
- v1.20 - исправлена критическая ошибка в EncButton2
535+
- v1.21 - EB_HALFSTEP_ENC теперь работает для обычного режима
535536

536537
<a id="feedback"></a>
537538
## Баги и обратная связь

examples/tickMode/tickMode.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
//#define EB_CLICK 400 // таймаут накликивания, мс
1010

1111
#include <EncButton.h>
12-
//EncButton<EB_TICK, 2, 3, 4> enc; // энкодер с кнопкой <A, B, KEY>
12+
EncButton<EB_TICK, 2, 3, 4> enc; // энкодер с кнопкой <A, B, KEY>
1313
//EncButton<EB_TICK, 2, 3> enc; // просто энкодер <A, B>
14-
EncButton<EB_TICK, 4> enc; // просто кнопка <KEY>
14+
//EncButton<EB_TICK, 4> enc; // просто кнопка <KEY>
1515
// для изменения направления энкодера поменяй A и B при инициализации
1616

1717
// по умолчанию пины настроены в INPUT_PULLUP

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=1.20
2+
version=1.21
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Light and fast library for button and encoder operation for Arduino

src/EncButton.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
v1.19.3 - сделал высокий уровень кнопки по умолчанию в виртуальном режиме
4747
v1.19.4 - фикс EncButton2
4848
v1.20 - исправлена критическая ошибка в EncButton2
49+
v1.21 - EB_HALFSTEP_ENC теперь работает для обычного режима
4950
*/
5051

5152
#ifndef _EncButton_h
@@ -334,7 +335,12 @@ class EncButton {
334335
}
335336
}
336337
#else
338+
#ifdef EB_HALFSTEP_ENC // полушаговый энкодер
339+
if (_encRST && (state == 0b00 || state == 0b11)) { // ресет и энк защёлкнул позицию
340+
if (!state && (_prev == 1 || _prev == 2)) _prev = 3 - _prev; // меняем 2 на 1 и 1 на 2
341+
#else
337342
if (_encRST && state == 0b11) { // ресет и энк защёлкнул позицию
343+
#endif
338344
uint16_t ms = millis() & 0xFFFF;
339345
if (_S2 == EB_NO_PIN || _KEY != EB_NO_PIN) { // энкодер с кнопкой
340346
if ((_prev == 1 || _prev == 2) && !readF(4)) { // если кнопка не "удерживается" и энкодер в позиции 1 или 2
@@ -357,7 +363,12 @@ class EncButton {
357363
_encRST = 0;
358364
_debTmr = ms;
359365
}
366+
#ifdef EB_HALFSTEP_ENC // полушаговый энкодер
367+
if (state == 0b11 || state == 0b00) _encRST = 1;
368+
#else
360369
if (state == 0b00) _encRST = 1;
370+
#endif
371+
361372
_prev = state;
362373
#endif
363374
}

src/EncButton2.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,6 @@ class EncButton2 {
131131
return EBState;
132132
}
133133

134-
#define EB_BTN 1
135-
#define EB_ENCBTN 2
136-
#define EB_ENC 3
137-
#define VIRT_BTN 4
138-
#define VIRT_ENCBTN 5
139-
#define VIRT_ENC 6
140-
141134
// тикер специально для прерывания, не проверяет коллбэки
142135
uint8_t tickISR(uint8_t p0 = 0, uint8_t p1 = 0, uint8_t p2 = 0) {
143136
if (!_isrFlag) {
@@ -286,7 +279,12 @@ class EncButton2 {
286279
}
287280
}
288281
#else
289-
if (_encRST && state == 0b11) { // ресет и энк защёлкнул позицию
282+
#ifdef EB_HALFSTEP_ENC // полушаговый энкодер
283+
if (_encRST && (state == 0b00 || state == 0b11)) { // ресет и энк защёлкнул позицию
284+
if (!state && (_prev == 1 || _prev == 2)) _prev = 3 - _prev; // меняем 2 на 1 и 1 на 2
285+
#else
286+
if (_encRST && state == 0b11) { // ресет и энк защёлкнул позицию
287+
#endif
290288
uint16_t ms = millis() & 0xFFFF;
291289
if (_EB_TYPE == EB_ENCBTN || _EB_TYPE == VIRT_ENCBTN) { // энкодер с кнопкой
292290
if ((_prev == 1 || _prev == 2) && !readF(4)) { // если кнопка не "удерживается" и энкодер в позиции 1 или 2
@@ -309,7 +307,11 @@ class EncButton2 {
309307
_encRST = 0;
310308
_debTmr = ms;
311309
}
310+
#ifdef EB_HALFSTEP_ENC // полушаговый энкодер
311+
if (state == 0b11 || state == 0b00) _encRST = 1;
312+
#else
312313
if (state == 0b00) _encRST = 1;
314+
#endif
313315
_prev = state;
314316
#endif
315317
}

0 commit comments

Comments
 (0)