Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 14:23:07

Захотелось чего-то большего, чем 3 кнопки, начал смотреть на различные варианты, сразу простой показалась матричная клавиатура, к тому же очень много разных готовых вариантов которые красиво будут смотреться на лицевой панели.

Например такую:
СпойлерИзображение

Но так как я очень придирчив, то возник вопрос из-за которого мой интерес сильно подостыл, и я начал больше посматривать на интерфейсные варианты подключения(но с большим числом клавиш на Али пока не могу найти). Или вариант индивидуально подключённых к шифратору кнопок(тоже не нашел готовых клавиатур, не нашел именно с индивидуальной разводкой, а не с шифратором, с шифратором я даже и не надеялся найти).

Короче суть в следующем: если сканирование по рядам, а опрос по столбцам, то через другую нажатую кнопку столбца сигнал может передаться на любой другой столбец:

Изображение

Вариантов устранить нашел только один вставить диод после каждой кнопки ряда вот так:

Изображение

Нажатие нормально отрабатывается, с небольшой проблемой из-за падения напряжения на диодах, но так как при такой схеме диоды должны стоять ПОСЛЕ КАЖДОЙ кнопки, то защитные диоды на входе не нужны:
СпойлерИзображение

Изображение

Но так как хочется готовую клаву, то не очень много шансов нормально впаять диоды, даже в SMD исполнении, да и не хочется этим заниматься.

Но ведь, судя по предложениям матричные клавиатуры широко распространены. В чем же дело?
Подключать матричные резисторы(для этого не нужно лезть внутрь клавы) - тоже сомнительный вариант, если положить ладошку на клаву, на выходе может быть всё что угодно, ножки то экономятся, но комбинаций замыкания неимоверное количество.

Но правда и тут есть варианты. Оставить сканирование как есть, но если сигнал идёт более чем с одного столбца, но вообще не учитывать нажатие, так как могут быть неоднозначности.

По мне так лучше ничего не делать, чем выполнить ошибочную команду.

С другой стороны, если всё же оставаться на матричной клаве, то лучше инвертировать входы и выходы. Заодно и 6 тактов за цикл опроса на AVR(сейчас планирую делать проект на нем, а так только начинаю изучать STM) сэкономится.
В этом случае тоже могут быть неоднозначности(не обращайте на плавающие выходы, для подсветки уровней перевёл резисторы в цифровой режим элуляции):

Изображение

Но зато если однозначно читается ряд или однозначно читается столбец, то можно безопасно обрабатывать одновременное нажатие. (Пока я и эти клавиши не знаю куда девать, но всё же).

У кого какие мысли по этому поводу? Ведь раз других готовых вариантов нет, то значит обычного исполнения матричных клавиатур всем хватает. Может это просто я такой замороченный.
Вложения
def_diode_w2.png
(38.74 KiB) Скачиваний: 442
def_diode_w.png
(37.91 KiB) Скачиваний: 430
revert_err.png
(45.6 KiB) Скачиваний: 432
def_err.png
(47.49 KiB) Скачиваний: 446
def_diode.png
(51.8 KiB) Скачиваний: 439

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 18:11:47

При использовании обычной матричной клавиатуры не подразумевается нажатие одновременно нескольких кнопок. Если такая ситуация возникнет (пальцы кривые, или что упало на клавиатуру), то обрабатываетя нажатие первой, которая найдется при сканировании. Остальные просто игнорируются. Никто и не парится на эту тему.

Если же предусматривается возможность нажатие нескольких кнопок одновременно, то нужно использовать другие схемотехнические решения, которые позволят корректно считывать состояние каждой необходимой кнопки. Столь "округлая" фраза потому, что нужно смотреть каждый конкретный случай.

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 18:19:32

Остальные просто игнорируются. Никто и не парится на эту тему.


Значит, как и предполагал, это только мои заморочки :beer:

А я бы вообще бы лучше ничего не нажал бы, чем выполнить не ту команду, но в общем понятно - успокоили.

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 18:22:46

Вообще то я не встречал, что бы матричную клавиатуру использовали для управления. Всегда попадалась только для набора. А уж после набора и проверки исполнение.

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 18:26:11

Если же предусматривается возможность нажатие нескольких кнопок одновременно, то нужно использовать другие схемотехнические решения, которые позволят корректно считывать состояние каждой необходимой кнопки. Столь "округлая" фраза потому, что нужно смотреть каждый конкретный случай.


Да в общем и не нужно, никогда ещё столько кнопок не применял. Да и живой клавиатуры нет, но теперь хоть могу спокойно заказать. А алгоритм как обработать несколько нажатий я уже нашел, он работает если кнопки в одном ряду или в одной колонке:

Добавлено after 55 seconds:
инвертировать входы и выходы. Заодно и 6 тактов за цикл опроса на AVR сэкономится


Добавлено after 1 minute 15 seconds:
Вообще то я не встречал, что бы матричную клавиатуру использовали для управления. Всегда попадалась только для набора. А уж после набора и проверки исполнение.

Не понял. А банальное меню верх-вниз, выбрать?

Добавлено after 34 seconds:
Надо получается несколько клавиатур - наборная и командная?

Добавлено after 31 second:
Точнее дополнительно 1-2 кнопки, но зачем, когда тут валом...

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 22:19:06

а зачем так сложно... резисторы диоды...
:roll:
можно же просто напрямую подключить к МК клавиатуру 4 х 4 = 16 кнопок.

Изображение

при этом достаточно одного порта... т.е. 8 пинов...

но сделаем хитро))
-первые 4 пина подключим через подтягивающие резисторы...
-вторые 4 пина тупо притянем к массе...

далее... опрос кнопок в два этапа)).
-когда нажимаем на любую кнопку срабатывает прерывание... т.к. на одном из первых 4 пинах упало напряжение.
и мы сразу знаем на каком столбце была нажата кнопка.
-осталось определить строку... для этого поочереди отключаем вторые 4 пина от массы.
когда напряжение опять поднимется до прежнего уровня это и будет искомая строка.

во как я придумал))
:tea:
Вложения
Screenshot_1.jpg
(20.17 KiB) Скачиваний: 358

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 23:17:33

для этого поочереди отключаем вторые 4 пина от массы.
:tea:

Для опроса по прерыванию пина или, по прерыванию таймера мне больше нравится следующий алгоритм:

прочитать полубайт порта ввода,
инвертировать DDR
прочитать другой полубайт порта ввода,
вернуть DDR как было

Нажатые клавиши определяются 0 в полубайтах.

Если не нужно обрабатывать одновременное нажате клавиш, то сразу получаем команду - через switch case где ключи байт из полубайтов или, если нужен символ, из двумерного массива, где ключи полубайты
Если нужно одновременное нажатие, наш switch case дополняем соответствующими кесами.

Добавлено after 2 minutes 24 seconds:
Но надо помнить, что если сразу в обоих полубайтх больше одного нуля, то состояние неоределенное, лучше такое проигнорировать. Достаточно просто не делать такие кейсы в switch

Re: Матричная клваитаура - я похоже параноик

Пн дек 15, 2025 23:52:53

можно по всякому...
:roll:
только надо осторожней с инвертированием DDR... а то получим короткое замыкание))
:tea:
при отключении массы короткого короткого замыкания не будет при любом раскладе...

Re: Матричная клваитаура - я похоже параноик

Вт дек 16, 2025 00:03:10

можно по всякому...
:roll:
только надо осторожней с инвертированием DDR... а то получим короткое замыкание))

Не будет, всё учтено. К тому же резисторы спасут.

мтpaчияна клваитаура - я пожoxe понораик

Вт дек 16, 2025 01:00:59

клваитаура - я похоже параноик


Пока ecть критичекое мышление - не всё потеряно !
( даже "клваитаура" )

Без диодов не очень xopoшо, но можно обойтись всего
четырмями - этого хватит, чтоб порты м.к. не пытались друг друга вывести из строя большим током.

Re: мтpaчияна клваитаура - я пожoxe понораик

Вт дек 16, 2025 06:41:25

клваитаура - я похоже параноик

Без диодов не очень xopoшо, но можно обойтись всего
четырмями - этого хватит, чтоб порты м.к. не пытались друг друга вывести из строя большим током.


Так как я загорелся идеей сканирования с инверитрованием входов-выходов - то диоды невозможны. А лишние резисторы (на каждый пин порта) не помешают, может китайские клавиши развалятся и внутри замкнут чего-нибудь.

Re: Матричная клваитаура - я похоже параноик

Вс дек 21, 2025 00:56:20

....
далее... опрос кнопок в два этапа)).
-когда нажимаем на любую кнопку срабатывает прерывание... т.к. на одном из первых 4 пинах упало напряжение.
и мы сразу знаем на каком столбце была нажата кнопка.
-осталось определить строку... для этого поочереди отключаем вторые 4 пина от массы.
когда напряжение опять поднимется до прежнего уровня это и будет искомая строка....



тупой вопрос:
А Вы задумывались почему на PC-шных клавах сканирование идёт нулём? Навожу мысль - искать надо в помехозащищённости.

Удачи Вам
(круглый)

Re: Матричная клваитаура - я похоже параноик

Ср дек 24, 2025 07:45:00

Параноик проектирует клавиатуру вот так:
Спойлер
Screenshot_20251224_104042.png
(75.13 KiB) Скачиваний: 45

Каждую кнопку можно нажать независимо от остальных. Шифт+5? Легко. Альт-Пробел-F3? Легко. 8 штук разом крестиком? Пальцев хватит?

И, да, эта дичь работает %)

По алгоритму:
Выбираем строку, читаем столбец на порту МК. Запоминаем. Выбираем следующий столбец, читаем, повторяем до конца. Применяем антидребезг, результат записываем в буфер отправки. Мастер заберёт данные по SPI когда потребуется.

Re: Матричная клваитаура - я похоже параноик

Ср дек 24, 2025 12:52:24

Как человек, работавший в психиатрии, это не паранойя. Это скорее обсессивно-компульсивное расстройство. Вредв окружающим минимум, себе - максимум.
Диагноз по МКБ-10 F42.0-F42.9. Уточнение по месту.
Ответить