Страница 19 из 26
Re: Опрос кнопок микроконтроллером
Добавлено: Пн дек 30, 2024 10:49:48
Starichok51
ARV, "понели" - это что и на каком языке?
Re: Опрос кнопок микроконтроллером
Добавлено: Пн дек 30, 2024 11:07:06
OKF
Всё нормально. Это сленг, жаргон.)
Re: Опрос кнопок микроконтроллером
Добавлено: Пн дек 30, 2024 17:09:22
Огонёк
[uquote="OKF",url="/forum/viewtopic.php?p=4665851#p4665851"]Можно и без бабах. Сделал одно, другое, третье, уснул и не проснулся. Где тут цикл?[/uquote]
Одноразовое изделие? Бывает.
Или же в цикл включен мясной человек, который, увидев, что чудо-устройство не подаёт признаков жизни, ткнёт красную кнопочку и перезапустит цикл.
Re: Опрос кнопок микроконтроллером
Добавлено: Пн дек 30, 2024 21:40:34
ARV
Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...
Re: Опрос кнопок микроконтроллером
Добавлено: Ср янв 01, 2025 13:49:13
AlexS4
[uquote="ARV",url="/forum/viewtopic.php?p=4665951#p4665951"]невозможно программно заставить человека нажать на кнопку.[/uquote]
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно

Re: Опрос кнопок микроконтроллером
Добавлено: Ср янв 01, 2025 13:58:31
Just_Fluffy
"Нажми на кнопку - получишь результат!
Твоя мечта осуществится!" (ц) Технология
Re: Опрос кнопок микроконтроллером
Добавлено: Ср янв 01, 2025 14:15:09
ARV
[uquote="AlexS4",url="/forum/viewtopic.php?p=4666739#p4666739"][uquote="ARV",url="/forum/viewtopic.php?p=4665951#p4665951"]невозможно программно заставить человека нажать на кнопку.[/uquote]
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно

[/uquote]
Предполагать можно всё, что угодно. Реальность доказывает, что нажимают единицы из тысяч. Процент дебилов никогда не был и не будет равен нулю...
Re: Опрос кнопок микроконтроллером
Добавлено: Сб янв 04, 2025 18:38:17
BOB51
К примеру вылезла хренова рекламна заставка, а убрать ее таки кнопкой надо (или убрать или программу закрыть)...
Вот и таки "заставили кнопку нажать".

Re: Опрос кнопок микроконтроллером
Добавлено: Сб янв 04, 2025 21:30:41
Jack_A
Re: Опрос кнопок микроконтроллером
Добавлено: Сб янв 04, 2025 23:08:27
Огонёк
[uquote="ARV",url="/forum/viewtopic.php?p=4666198#p4666198"]Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...[/uquote]
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия -
https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 01:31:29
Just_Fluffy
Огонёк писал(а):непременной необходимости мясных человеков
Кожаных же )))
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 13:08:24
ARV
[uquote="Огонёк",url="/forum/viewtopic.php?p=4667876#p4667876"][uquote="ARV",url="/forum/viewtopic.php?p=4666198#p4666198"]Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...[/uquote]
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия -
https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB[/uquote]вот еще сказок тут не хватало... Википедия и без того тот еще источник, так ещё и каждое второе слово "предположительно"

Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 14:45:46
OKF
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4667901#p4667901"]Кожаных же )))[/uquote]
"...хотел пробить сильно и точно, да неудачно лёг на ногу его кожаный дружок". Футбол, вспомнилось.))
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 17:00:55
Just_Fluffy
OKF, ну мне больше вспомнилась озвучка от лица роботов из бостон дайнемикс - "...кожаные ублюдки..."
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 18:08:37
OKF
Теперь по теме.)
Код: Выделить всё
// Кнопки без дребезга
uint8_t keyTick() {
static uint8_t timer;
static uint8_t old;
static uint8_t valid;
uint8_t key = get_key();
if (old != key) { //change
old = key;
timer = DEBOUNCE_TIME;
}
else if (timer && !--timer && valid != key)
valid = key;
return valid;
}
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 20:44:27
Just_Fluffy
OKF, т.е. для каждой кнопки в памяти надо держать три байтовых переменных? И тогда для каждой кнопки нужно в keyTick передавать указатель на эти три байта плюс физическое состояние кнопки...
Тогда мой вариант с "гистерезисным" счетчиком экономичнее - один байт на кнопку.
Тут ранее упоминался т.н. вертикальный счетчик - хорош, когда 8 кнопок легко мапятся в один байт. Тогда 3 байта хватает для 8 кнопок.
Re: Опрос кнопок микроконтроллером
Добавлено: Вс янв 05, 2025 21:56:26
BOB51
Всё зависит от того, какой функционал той кнопке в программе задавать нужно.
Служебных флагов и прочего может быть и побольше.

Re: Опрос кнопок микроконтроллером
Добавлено: Пн янв 06, 2025 00:13:26
Adrift
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4668178#p4668178"]т.е. для каждой кнопки в памяти надо держать три байтовых переменных?[/uquote]
Если get_key() возвращает состояние 8-ми кнопок, то и работать будет для 8-ми кнопок.
Just_Fluffy писал(а):Тогда мой вариант с "гистерезисным" счетчиком экономичнее - один байт на кнопку.
Тут ранее упоминался т.н. вертикальный счетчик - хорош, когда 8 кнопок легко мапятся в один байт. Тогда 3 байта хватает для 8 кнопок.
С удовольствием послушаю как при помощи 2-х или 3-х битного вертикального счетчика считающего строго до 4-х или 8-ми задать пороговое значение в 30ms для короткого нажатия, 150ms для автоповтора и 700ms для длинного нажатия )
Re: Опрос кнопок микроконтроллером
Добавлено: Пн янв 06, 2025 11:13:41
Just_Fluffy
Adrift писал(а):Если get_key() возвращает состояние 8-ми кнопок, то и работать будет для 8-ми кнопок.
там как минимум timer должен быть индивидуален для каждой кнопки. И длинное/короткое нажатие в коде
OKF тоже не предусмотрено, так что не передергивайте.
Adrift писал(а):С удовольствием послушаю как при помощи 2-х или 3-х битного вертикального счетчика считающего строго до 4-х или 8-ми задать пороговое значение в 30ms для короткого нажатия, 150ms для автоповтора и 700ms для длинного нажатия )
Опять же, вырвано из контекста.
Я всего лишь говорила про экономию памяти. А как автоповтор будет реализовывать автор вертикальных счетчиков - вопрос алгоритма)))
А вообще - все зависит от
алгоритма. Мне хватает 2 байт на кнопку на короткое/длинное нажатие/автоповтор/пауза перед автоповтором.
Re: Опрос кнопок микроконтроллером
Добавлено: Пн янв 06, 2025 11:41:31
ARV
Итак, дребезг гасим тем, что опрос ведем периодически с периодом дольше дребезга, допустим, 30 мс.
get_key возвращает результат опроса сразу 8 кнопок
Далее, делаем функцию get_event, которая берет get_key и при помощи единственного счетчика отслеживает: нажатие, отпускание и промежуток между ними.
Таким образом, имеем минимум накладных расходов и работаем с событиями: ИЗМЕНИЛОСЬ_СОСТОЯНИЕ_КНОПОК и СОСТОЯНИЕ_НЕ_МЕНЯЕТСЯ_ДОЛГО.
То есть отслеживаем и долгое удержание кнопки, и короткое.
Раз и навсегда такое написали, и горя больше не знаем. Опрос можно повесить на любой таймер, который всё равно наверняка будет в любом проекте. И тему можно закрывать
Добавлено after 7 minutes 47 seconds:
Дополнение: get_key может возвращать до 255 кнопок, но в этом случае комбинации одновременно нажатых кнопок могут быть недоступны.
Я больше вариантов навешиваю на get_event, формируя там из комбинаций готовые события. Тогда в разных проектах почти всё одинаково делается, только события могут быть разные. И туда, кстати, очень хорошо вписываются события от энкодера, команды из USART, прерываний и т.п., вся обработка однотипная выходит