|
|
|
Опрос клавиатуры на С, Как написать компактный и "красивый" код? |
|
|
|
Jun 24 2018, 11:11
|
Частый гость
Группа: Участник
Сообщений: 181
Регистрация: 15-04-17
Пользователь №: 96 556
|
Ну раз музыканты это специфика, то вот еще один пример. Есть у меня самодеятельный ЦАП с пультом управления. Пульт с многими кнопками, а питается для уменьшения габаритов от батареи типоразмера 2320. Так вот если мне каждые 100мс опрашивать кнопки, то батарейки придется часто менять. Можно даже придумать хитрый алгоритм, который будет увеличивать интервал между опросами, если длительное время отсутствует нажатие, но тогда я буду беситься от долгого времени отклика при первом нажатии. Диоды же, повешенные на прерывание, позволяют МК спать все время, пока не произошло нажатия. Время работы от батареи значительно вырастает.... Эти примеры я для чего привожу, что каждой задаче - свое решение. И вопрос как лучше опрашивать клавиатуру на Си, требует уточнения, какую клавиатуру и в каких условиях.
|
|
|
|
|
Jun 25 2018, 09:09
|
Профессионал
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848
|
Цитата(Make_Pic @ Jun 25 2018, 05:06) Тема ушла куда то "налево" А хотелось просто увидеть код хорошего простого решения по клавиатуре... Нет, тема идет полностью так, как Вы ее задали в первом посте. Цитата Опрос клавиатуры на С -> Как написать компактный и "красивый" код? Вот Вам и рекомендуют не сам код, а как его писать "красиво", те выбрать правильный алгоритм. Как его перенести на код - это уже дело техники. т.е. Вы хотите увидить готовый код - драйвер клавиатуры ? Хотя это несколко противоречит цитате выше (я свой драйвер матрицы 4x4 выложу, позднее). Вот реализация на С от Ti Low power keyb PDF SLAA773
|
|
|
|
|
Jun 25 2018, 10:35
|
Ally
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050
|
Цитата(k155la3 @ Jun 25 2018, 12:09) Вот реализация на С от Ti Тут надо сразу предупредить, что такая клавиатура надежно дает определить только одно нажатие. Если речь идет о клавиатуре скажем PC где надо обрабатывать несколько нажатий одновременно, то такая клавиатура не годится. Надо добавить диоды как минимум. А алгоритм соответственно не адаптирован к условиям сильных помех.
|
|
|
|
|
Jun 25 2018, 12:13
|
Профессионал
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831
|
Цитата(Herz @ Jun 25 2018, 13:02) А зачем в "рядовых" машинах подтяжка с кнопки педали тормоза? Под рядовыми я понимаю бюджетные ширпотребные авто не самых "бородатых" годов (скажем, до 10лет), где все же производится хотя бы какой-нить целостность стоп-ламп, тем более, если авто с коробкой-автомат. Но это уже офф. Цитата(AlexandrY @ Jun 25 2018, 13:35) Тут надо сразу предупредить, что такая клавиатура надежно дает определить только одно нажатие. Если речь идет о клавиатуре скажем PC где надо обрабатывать несколько нажатий одновременно, то такая клавиатура не годится. Надо добавить диоды как минимум. Вы верны своей "традиции" - очередной "пук в лужу" Любая матричная клавиатура позволяет однозначно обрабатывать условия, когда даже ВСЕ кнопки нажаты и уж тем более в любом сочетании любого числа одновременно нажатых кнопок. Никакие диоды тут не нужны. Достаточно лишь ряда резисторов подтяжки на столбцы или строки.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jun 25 2018, 12:32
|
Профессионал
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831
|
Цитата(AlexandrY @ Jun 25 2018, 15:24) А над этим предлагаю вам подумать еще раз. Согласен, поторопился с выводами. Без диодов в таком случае не обойтись. Однако, в случае с клавиатурой, у которой сопротивление нажатых кнопок относительно большое (пленочные клавиатуры), это решаемо без диодов. Но усложняется алгоритм опроса - нужен импульсный (ШИМ) или даже аналоговый способ измерений. Судя по всему именно такой и применяется в клавиатурах ПК, для выявления подобных "коллизий".
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|