Comments (5)
btn.tick();
нужно вызывать циклично, так как в нём происходит обработка кнопки с учётом дребезга контактов и прочих таймаутов. Если нужно проверить уровень кнопки при запуске - достаточно использовать
- Button/ButtonT:
bool read(); // прочитать текущее значение кнопки
- EncButton/EncButtonT:
bool readBtn(); // прочитать текущее значение кнопки
from encbutton.
Всё верно! Чтение кнопки производится с учётом настроенного уровня кнопки:
bool read() {
return EBread(pin) ^ read_bf(EB_INV);
}
from encbutton.
Без цикличного вызова tick обработка кнопки не работает, потому что обработка кнопки производится внутри tick. Библиотека асинхронная, поэтому после начала нажатия кнопки должно пройти какое то время, чтобы кнопка считалась нажатой. Библиотека не тормозит код на этот период. Нужно или отказаться от грамотной обработки кнопки, или пересмотреть логику работы программы, потому что какая то подобная логика внутри setup это изначально неправильно.
Например так
bool flag = 1;
void loop() {
btn.tick();
if (flag) {
if (btn.press()) foo();
// flag = 0; // перейти к другой логике
} else {
if (btn.press()) bar();
}
}
Это называется конечный автомат, или более понятно "режимы работы". Вместо глухого кода в сетап лучше перейти в главный цикл с условиями и свитчами
from encbutton.
- Button/ButtonT:
bool read(); // прочитать текущее значение кнопки
- EncButton/EncButtonT:
bool readBtn(); // прочитать текущее значение кнопки
Благодарю, я спасен!
void setup() {
btn_right.setButtonLevel(HIGH);
Serial.begin(115200);
if (btn_left.read()) {
Serial.println("Левая удержана при перезагрузке");
}
if (btn_right.read()) {
Serial.println("Правая удержана при перезагрузке");
}
}
Причем, хоть и опроса в цикле btn.tick()
нет, setButtonLevel
выполняется отлично.
У меня левая кнопка с подтяжкой к 3.3 в, а правая к земле.
Поэтому нужно инвертировать логику.
from encbutton.
Всё верно! Чтение кнопки производится с учётом настроенного уровня кнопки:
bool read() { return EBread(pin) ^ read_bf(EB_INV); }
Все хорошо, @GyverLibs но мне очень не хватает debounce в секции setup(){}
Инициализирую кнопку так
Button btn_left(39, INPUT);// внешняя подтяжка
И применяю для экранной клавиатуры
setup(){
if (btn_left.read())
{
rsel++;
if (rsel >= ROWS) rsel = 0;
}
if (btn_right.read())
{
csel++;
if (csel >= COLS) csel = 0;
}
}
Переменные rsel
и csel
почти всегда увеличиваются на 2(два) значения, видимо кнопка определяет нажатие и при НАЖАТИИ и при ОТПУСКАНИИ.
Можно, что то придумать, или именно с этой библиотекой применение без tick()
в бесконечном цикле - неполноценно?
from encbutton.
Related Issues (20)
- Проблема с энкодерами HOT 2
- Не работают прерывания, как следует на stm32 HOT 1
- Добавить поддержку энкодера HOT 18
- Не работает на Arduino Nano 33 BLE HOT 36
- Проект на wokwi с кнопками EncButton HOT 61
- Todo? HOT 8
- Migration from V2 to V3: tick() returns unreliable status HOT 5
- the 'eb.clear()' does not really set the encoder counter to 0 HOT 1
- Unusual step counting by rotary encoder HOT 5
- Многократное срабатывание виртуальной кнопки при однократном нажатии кнопки HOT 3
- fast() всегда false
- Ke-040 и 74hc165 HOT 9
- Совместимость с ESP8266 (Wemos D1 Mini) HOT 4
- Передать аргументы в событие. HOT 9
- 3.5.1 Won't compile HOT 1
- Описка в README HOT 1
- Внутрення подтяжка пинов INPUT_PULLUP HOT 13
- Невозможно использовать библиотеку после обновления до 3.5.9 HOT 2
- Иногда нет обработки вращения энкодера HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from encbutton.