чтение цифрового пина. Если ВСЕ 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 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
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 попыток показали одно и то же (Активный уровень), кнопка нажата, иначе нет. За годы - ни одного ложного срабатывания, забыл я про дребезг напрочь.
Задумалась
bool Buttons::pressing() { bool pinstat = digitalRead(_pin); bool stat_ret = false; switch (_stat) { case 0x00: if (pinstat)_stat = 0x01; break; case 0x01: if (!pinstat ) { _tmr = millis(); _stat = 0x02; } break; case 0x02: if (!pinstat) { if (millis() - _tmr >= _retention_time) { _stat = 0x00; stat_ret = true; } } else { _tmr = millis(); } break; } return stat_ret; };25 строчка кода _tmr = millis();
Или в этот момент возвращаться на проверку
case 0x00: if (pinstat)_stat = 0x01; break;Веселая блок-схема )))
Это чтобы запутать врага или самой запутаться?
Я на прошлой странице приводил примерный алгоритм, вот по нему блок-схема
Это должно крутиться в лупе чем чаще, тем лучше ))
Возвращает три состояния:
BTN_UP - кнопка только что отпущена
BTN_DOWN - кнопка только что нажата
BTN_LONGPRESS - кнопка удерживается нажатой
сразу видно мальчик составлял, ДА в два раза чаще чем НЕТ )))
))))
А я что-то вообще таких схем не понимаю: куда идти, если "нет"?
Вообще, условный оператор с единственным выходом - это нонсенс.
Никуда не идти. Если условие не выполнилось, работа функции завершается.
Понятно, что по фэншую надо все в конец сводить, но по мне эта мешанина линий только мешается ))
Я только ЗА!!! ;-)
Я только ЗА!!! ;-)
Седина в бороду, бес - в конец? )))
HALT?
HALT?
Это блок-схема функции, а не программы. Дальше идет возврат в точку, следующую за вызовом функции.
Алгоритм примерный. Зависит от конечной цели: если нужно, чтобы функция обязательно что-то возвращала, то нужно дописать пару строк, а если по итогу нужно просто флаги выставлять, то больше ничего не нужно.
Ну то есть функция может по желанию - иногда что-то возвращать, а иногда - нет?
Ну то есть функция может по желанию - иногда что-то возвращать, а иногда - нет?
Да. Зависит от замысла разработчика. Нужно, чтобы возвращала - будет возвращать. Не нужно - не будет. Что непонятного в словах "это примерный алгоритм"? ;)
Алгоритмов примерных не бывает.
Бывает либо алгоритм, либо - нет.
Алгоритмов примерных не бывает.
Да, да, и условный оператор с одним выходом - нонсенс. К чему этот троллинг? Вечер не задался?