Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Вопрос по 4*4 клавиатуре

Ср фев 22, 2017 21:11:49

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

Re: Вопрос по 4*4 клавиатуре

Ср фев 22, 2017 22:27:40

Диодов не хватает каждой кнопке.
И читай динамический опрос.

Re: Вопрос по 4*4 клавиатуре

Ср фев 22, 2017 22:28:16

https://yandex.ru/search/?lr=5&msid=148 ... 1%80%D1%8B
Зачем тут переписывать то, чего и так навалом в интернете ?

Конкретно, что не понятно ?

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 05:14:18

Сам принцип таков. Есть "строки", есть "столбцы".

Цикл y от 1 до 4 по строкам
--подаем питание на y
--ждем чуток, пока пин отреагирует и включит питание
--Цикл x от 1 до 4 по столбцам
----если на x 1, то нажата кнопка (x,y)
--конец цикла по столбцам
--убираем питание с y
конец цикла по строкам

то есть суть в том, что по очереди на одну координату подаем питание, а по другой проверяем: появилось ли оно. И если появилось, то нажата кнопка на их пересечении. Далее убираем питание и переходим дальше. Проблемой будет, когда у вас будут нажаты несколько кнопок одновременно. Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь (кто кого перетянет). Поэтому, на одну из координат по диоду шоттки воткните, а со стороны другой координаты подтяните к земле (если отсутствием сигнала будет считаться земля). Также не забудьте про дребезг контактов, который в вашем случае можно устранить программно.

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

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 07:16:29

spongebob писал(а):Диодов не хватает каждой кнопке...

дабы не было кз при
LastHopeMan писал(а):одновременно нажатые кнопки

Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.

Добавлено after 7 minutes:
LastHopeMan писал(а):...
--Цикл x от 1 до 4 по столбцам
....

Интереснее считать сразу порт и по маске определить нажатую кнопку.

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 09:57:16

На каждой кнопке.
Иначе при одновременном нажатии 3х и более кнопок будут ложные срабатывания.
Представьте что вы нажали кнопки с адресами 1.1, 3.1, 3.3
При опросе первой строки окажутся на выходе "нажатыми" 1.1 и 1.3 (хотя 1.3 и не нажата).
П.с. это если есть вероятность одновременного нажатия 3-х и более. Если 2 и более, то на строки(столбцы). Если 1, то ничего не надо.

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 10:43:55

pyzhman писал(а):Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.

Вы меня некачественно прочитали :))) Не говорил я такого.

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 11:01:00

Прочтите качественно моё предыдущее сообщение.

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 11:37:11

AN529

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 12:13:58

pyzhman писал(а):Прочтите качественно моё предыдущее сообщение.

Хорошо, тыкну лапой.

pyzhman писал(а):LastHopeMan писал(а):
одновременно нажатые кнопки

Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.

LastHopeMan писал(а):Поэтому, на одну из координат по диоду шоттки воткните, а со стороны другой координаты подтяните к земле (если отсутствием сигнала будет считаться земля)


Так что ваш косяк :music:

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 17:32:32

Вы, очевидно, некачественно прочли моё сообщение. Ещё раз -
дабы не было кз при "одновременно нажатые кнопки". Это означает, что для того, чтобы не было короткого замыкания при одновременно нажатых нескольких кнопках, линии нужно развязать диодами. Что является подтверждением ваших слов -
Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 17:59:36

Думаю, качественнее всего было бы наверное использовать ацп для такого количества кнопок. А одновременные нажатия не использовать, тем более судя по всему такая клавиатура скорей всего для ввода пароля понадобится, либо такие нажатия, если они присутствуют в задумке, программно заменить на какой-нибудь иной алгоритм. Тогда и программа проще станет и ног меньше под это дело уйдёт.

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 18:10:42

Если нет желания ставить на кнопки диоды - сделайте так, что бы в любой момент времени выходом был только один из 8-ми выводов (остальные 7 - входы).
Программа немного усложнится, но деталей на плате будет меньше (особенно, если использовать встроенную "подтяжку" к Vdd /PULL-UP/).

Re: Вопрос по 4*4 клавиатуре

Чт фев 23, 2017 19:11:22

pyzhman писал(а):Вы, очевидно, некачественно прочли моё сообщение. Ещё раз -
дабы не было кз при "одновременно нажатые кнопки". Это означает, что для того, чтобы не было короткого замыкания при одновременно нажатых нескольких кнопках, линии нужно развязать диодами. Что является подтверждением ваших слов -
Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь

Я как раз сразу во всем разобрался, в отличие от вас. Вы когда отвечали предыдущему оратору, то вместо его сообщения выдрали цитату из моего. Причем совершенно из другого контекста.
Неужели так сложно просто взять и прочитать с самого начала?

Re: Вопрос по 4*4 клавиатуре

Пт фев 24, 2017 05:32:17

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

Re: Вопрос по 4*4 клавиатуре

Пт фев 24, 2017 10:51:46

Если применить выходы с открытым коллектором, то не надо диодов. Но входы должны быть с подтяжками в плюс.
Чтоб не заставлять проц постоянно опрашивать клаву, - наверно можно сделать обработку по прерыванию.

Re: Вопрос по 4*4 клавиатуре

Пт фев 24, 2017 11:10:23

Или применить ТТЛ микросхемы включая счетчик, но по размеру проигрываем.
Например, так https://www.youtube.com/watch?v=5H5WsxCqO9A

Re: Вопрос по 4*4 клавиатуре

Пт фев 24, 2017 15:55:22

Однако вопрос ТС состоит
anten89 писал(а):...со стороны программы...

, а не со стороны железа.
Ответить