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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

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

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

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

Изображение

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

Изображение

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

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

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

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

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

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

Изображение

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

У кого какие мысли по этому поводу? Ведь раз других готовых вариантов нет, то значит обычного исполнения матричных клавиатур всем хватает. Может это просто я такой замороченный.
Вложения
def_diode_w2.png
(38.74 КБ) 580 скачиваний
def_diode_w.png
(37.91 КБ) 572 скачивания
revert_err.png
(45.6 КБ) 561 скачивание
def_err.png
(47.49 КБ) 576 скачиваний
def_diode.png
(51.8 КБ) 556 скачиваний
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

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

Если же предусматривается возможность нажатие нескольких кнопок одновременно, то нужно использовать другие схемотехнические решения, которые позволят корректно считывать состояние каждой необходимой кнопки. Столь "округлая" фраза потому, что нужно смотреть каждый конкретный случай.
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

[uquote="vem566",url="/forum/viewtopic.php?p=4772558#p4772558"]Остальные просто игнорируются. Никто и не парится на эту тему.[/uquote]

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

А я бы вообще бы лучше ничего не нажал бы, чем выполнить не ту команду, но в общем понятно - успокоили.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Вообще то я не встречал, что бы матричную клавиатуру использовали для управления. Всегда попадалась только для набора. А уж после набора и проверки исполнение.
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

[uquote="vem566",url="/forum/viewtopic.php?p=4772558#p4772558"]Если же предусматривается возможность нажатие нескольких кнопок одновременно, то нужно использовать другие схемотехнические решения, которые позволят корректно считывать состояние каждой необходимой кнопки. Столь "округлая" фраза потому, что нужно смотреть каждый конкретный случай.[/uquote]

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

Добавлено after 55 seconds:
[uquote="Simon.S",url="/forum/viewtopic.php?p=4772494#p4772494"]инвертировать входы и выходы. Заодно и 6 тактов за цикл опроса на AVR сэкономится[/uquote]

Добавлено after 1 minute 15 seconds:
[uquote="vem566",url="/forum/viewtopic.php?p=4772562#p4772562"]Вообще то я не встречал, что бы матричную клавиатуру использовали для управления. Всегда попадалась только для набора. А уж после набора и проверки исполнение.[/uquote]
Не понял. А банальное меню верх-вниз, выбрать?

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

Добавлено after 31 second:
Точнее дополнительно 1-2 кнопки, но зачем, когда тут валом...
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

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

Изображение

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

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

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

во как я придумал))
:tea:
Вложения
Screenshot_1.jpg
(20.17 КБ) 494 скачивания
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

[uquote="roman.com",url="/forum/viewtopic.php?p=4772603#p4772603"]для этого поочереди отключаем вторые 4 пина от массы.
:tea:[/uquote]
Для опроса по прерыванию пина или, по прерыванию таймера мне больше нравится следующий алгоритм:

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

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

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

Добавлено after 2 minutes 24 seconds:
Но надо помнить, что если сразу в обоих полубайтх больше одного нуля, то состояние неоределенное, лучше такое проигнорировать. Достаточно просто не делать такие кейсы в switch
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

можно по всякому...
:roll:
только надо осторожней с инвертированием DDR... а то получим короткое замыкание))
:tea:
при отключении массы короткого короткого замыкания не будет при любом раскладе...
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

[uquote="roman.com",url="/forum/viewtopic.php?p=4772621#p4772621"]можно по всякому...
:roll:
только надо осторожней с инвертированием DDR... а то получим короткое замыкание))[/uquote]
Не будет, всё учтено. К тому же резисторы спасут.
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

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

Сообщение petrenko »

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

Без диодов не очень xopoшо, но можно обойтись всего
четырмями - этого хватит, чтоб порты м.к. не пытались друг друга вывести из строя большим током.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Simon.S
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн дек 15, 2025 13:29:04

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

Сообщение Simon.S »

[uquote="petrenko",url="/forum/viewtopic.php?p=4772628#p4772628"]
клваитаура - я похоже параноик
Без диодов не очень xopoшо, но можно обойтись всего
четырмями - этого хватит, чтоб порты м.к. не пытались друг друга вывести из строя большим током.[/uquote]

Так как я загорелся идеей сканирования с инверитрованием входов-выходов - то диоды невозможны. А лишние резисторы (на каждый пин порта) не помешают, может китайские клавиши развалятся и внутри замкнут чего-нибудь.
kolobok0
Грызет канифоль
Сообщения: 296
Зарегистрирован: Ср дек 30, 2009 09:55:39

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

Сообщение kolobok0 »

[uquote="roman.com",url="/forum/viewtopic.php?p=4772603#p4772603"]....
далее... опрос кнопок в два этапа)).
-когда нажимаем на любую кнопку срабатывает прерывание... т.к. на одном из первых 4 пинах упало напряжение.
и мы сразу знаем на каком столбце была нажата кнопка.
-осталось определить строку... для этого поочереди отключаем вторые 4 пина от массы.
когда напряжение опять поднимется до прежнего уровня это и будет искомая строка....[/uquote]


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

Удачи Вам
(круглый)
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

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

Сообщение AlanDrakes »

Параноик проектирует клавиатуру вот так:
Спойлер
Screenshot_20251224_104042.png
(75.13 КБ) 83 скачивания
Каждую кнопку можно нажать независимо от остальных. Шифт+5? Легко. Альт-Пробел-F3? Легко. 8 штук разом крестиком? Пальцев хватит?

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

По алгоритму:
Выбираем строку, читаем столбец на порту МК. Запоминаем. Выбираем следующий столбец, читаем, повторяем до конца. Применяем антидребезг, результат записываем в буфер отправки. Мастер заберёт данные по SPI когда потребуется.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

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

Вернуться в «Периферия»