чтение цифрового пина. Если ВСЕ 16 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
protected:
static constexpr uint8_t NUM_ATTEMPTS = 16;
static bool ReadDigitalPin(const uint8_t APin, const bool AActiveLevel) {
for (uint8_t i = 0; i < NUM_ATTEMPTS; ++i) {
if (digitalRead(APin) != AActiveLevel) return false;
}
return true;
}
надежность сохраняется при уменьшении попыток до 10, потом надо ставить delay(1) после каждого чтения. Для себя я 16 оставил, мне не к спеху кнопку опрашивать. :)
чтение цифрового пина. Если ВСЕ 16 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
Никуда не идти. Если условие не выполнилось, работа функции завершается.
Завершается чем?
HALT?
Это блок-схема функции, а не программы. Дальше идет возврат в точку, следующую за вызовом функции.
Алгоритм примерный. Зависит от конечной цели: если нужно, чтобы функция обязательно что-то возвращала, то нужно дописать пару строк, а если по итогу нужно просто флаги выставлять, то больше ничего не нужно.
Ну то есть функция может по желанию - иногда что-то возвращать, а иногда - нет?
Да. Зависит от замысла разработчика. Нужно, чтобы возвращала - будет возвращать. Не нужно - не будет. Что непонятного в словах "это примерный алгоритм"? ;)
Алгори́тм — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи.
И не парюсь уже пару лет. ))
Не с кем, или возраст взял своё? ;-)))
https://github.com/kakmyc-github/kakmyc_btn
И не парюсь уже пару лет. ))
Девушка делает свое, весьма похвальное стремление ))
чтение цифрового пина. Если ВСЕ 16 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
надежность сохраняется при уменьшении попыток до 10, потом надо ставить delay(1) после каждого чтения. Для себя я 16 оставил, мне не к спеху кнопку опрашивать. :)
чтение цифрового пина. Если ВСЕ 16 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
Задумалась
25 строчка кода _tmr = millis();
Или в этот момент возвращаться на проверку
Веселая блок-схема )))
Это чтобы запутать врага или самой запутаться?
Я на прошлой странице приводил примерный алгоритм, вот по нему блок-схема
Это должно крутиться в лупе чем чаще, тем лучше ))
Возвращает три состояния:
BTN_UP - кнопка только что отпущена
BTN_DOWN - кнопка только что нажата
BTN_LONGPRESS - кнопка удерживается нажатой
сразу видно мальчик составлял, ДА в два раза чаще чем НЕТ )))
))))
А я что-то вообще таких схем не понимаю: куда идти, если "нет"?
Вообще, условный оператор с единственным выходом - это нонсенс.
Никуда не идти. Если условие не выполнилось, работа функции завершается.
Понятно, что по фэншую надо все в конец сводить, но по мне эта мешанина линий только мешается ))
Я только ЗА!!! ;-)
Я только ЗА!!! ;-)
Седина в бороду, бес - в конец? )))
HALT?
HALT?
Это блок-схема функции, а не программы. Дальше идет возврат в точку, следующую за вызовом функции.
Алгоритм примерный. Зависит от конечной цели: если нужно, чтобы функция обязательно что-то возвращала, то нужно дописать пару строк, а если по итогу нужно просто флаги выставлять, то больше ничего не нужно.
Ну то есть функция может по желанию - иногда что-то возвращать, а иногда - нет?
Ну то есть функция может по желанию - иногда что-то возвращать, а иногда - нет?
Да. Зависит от замысла разработчика. Нужно, чтобы возвращала - будет возвращать. Не нужно - не будет. Что непонятного в словах "это примерный алгоритм"? ;)
Алгоритмов примерных не бывает.
Бывает либо алгоритм, либо - нет.
Алгоритмов примерных не бывает.
Да, да, и условный оператор с одним выходом - нонсенс. К чему этот троллинг? Вечер не задался?