несколько кнопок через делитель напряжения ESP8866
- Войдите на сайт для отправки комментариев
Вс, 09/10/2022 - 14:45
Делаю бизиборд, так как основная фишка это много разных кнопок, а на ESP портов не так много, сделал через делитель напряжения. Схема классическая, в роде все работает. Если в лупе без delay выводить в порт значения то показания скачат +/-1, чтто ы целом хорошо. Но вот стоит только пробовать отрабатывать нажатия, при нажатии случайны значения появляются.
Пример кода просто проверка работы, тут все хорошо
void loop() {
int bt = analogRead(A0); Serial.println(bt); }
Вот так пытаюсь обработать
void loop() { int bt = analogRead(A0); presBt = bt > 50; if (presBt) { delay(100); int bt = analogRead(A0); } if (presBt && !PredPresBt) { eventBt(bt); Serial.println(bt); } PredPresBt = presBt; }
В чем я промахнулся, может кто натолкнет на правильный путь?
Поставьте pcf8574 и забудъте про кнопках на делителе навсегда.
В том, что не учитывал характеристик используемого оборудования, очевидно. И даже понятия не имеешь. что это надо делать. Иначе бы начинал со схемы, а не своего бесполезного объяснения.
ну да, на киловаттном передатчике 12 аналоговых кнопок работают и сбоев нет, а на столе им что-то мешает (на 5 вольтах nano)
Простите, а в восьмой строке, это что?
Как надпись на письме "Настолько секретно, что перед прочтением уничтожить"?
Простите, а в восьмой строке, это что?
Как надпись на письме "Настолько секретно, что перед прочтением уничтожить"?
Лишняя инициализация переменной, это критично? или не про это вопрос?
Это не лишняя инициализация, это лишняя переменная с таким же именем, которая потом нигде не используется. Почитайте про области видимости переменных
Это не "лишняя инициализация, это - лишняя переменная.
Кстати, думаю, она действительно лишняя - по идее оптимизатор ее должен выкинуть. В общем, строки 6, 8 и 9 можно совершенно безболезненно удалить из кода.
Логика какая была. Читаю вход, значение не нажатой кнопки где то 20, если больше 50 то точно, что то нажато, после ждем 100 милисекунд, и читаем еще раз, пропуская дребезг.
Логика какая была. Читаю вход, значение не нажатой кнопки где то 20, если больше 50 то точно, что то нажато, после ждем 100 милисекунд, и читаем еще раз, пропуская дребезг.
Зачем для этого объявлять еще одну переменную, которая нигде не будет использована?
Логика какая была. Читаю вход, значение не нажатой кнопки где то 20, если больше 50 то точно, что то нажато, после ждем 100 милисекунд, и читаем еще раз, пропуская дребезг.
Зачем для этого объявлять еще одну переменную, которая нигде не будет использована?
Объявлять согласен, не надо. Скопировал строчку не обратив внимания, далее эта переменная передается в функцию
Логика какая была. Читаю вход, значение не нажатой кнопки где то 20, если больше 50 то точно, что то нажато, после ждем 100 милисекунд, и читаем еще раз, пропуская дребезг.
Зачем для этого объявлять еще одну переменную, которая нигде не будет использована?
Объявлять согласен, не надо. Скопировал строчку не обратив внимания, далее эта переменная передается в функцию
То то ж и оно, что в таком виде никуда она не передается, туда передается объявленная в строке 3 переменная, которая, однако, обновлена не была
Логика какая была. Читаю вход, значение не нажатой кнопки где то 20, если больше 50 то точно, что то нажато, после ждем 100 милисекунд, и читаем еще раз, пропуская дребезг.
Зачем для этого объявлять еще одну переменную, которая нигде не будет использована?
Объявлять согласен, не надо. Скопировал строчку не обратив внимания, далее эта переменная передается в функцию
То то ж и оно, что в таком виде никуда она не передается, туда передается объявленная в строке 3 переменная, которая, однако, обновлена не была
Спасибо понял, тогда получается delay вообще нечего не делал, буду пробовать. Такой особенности не знал, предполагал что в таком случае просто запишется новое значение. Я 1Сник, у нас с этим делом чуть проще.