Страница 1 из 1

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

Добавлено: Ср фев 22, 2017 21:11:49
anten89
Вот делаю клавиатуру для пика:
Изображение
растолкуйте мне принцип работы с такой клавиатурой со стороны программы, то есть как осуществлять опрос и т.д.

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

Добавлено: Ср фев 22, 2017 22:27:40
spongebob
Диодов не хватает каждой кнопке.
И читай динамический опрос.

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

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

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

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

Добавлено: Чт фев 23, 2017 05:14:18
LastHopeMan
Сам принцип таков. Есть "строки", есть "столбцы".

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

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

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

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

Добавлено: Чт фев 23, 2017 07:16:29
pyzhman
spongebob писал(а):Диодов не хватает каждой кнопке...
дабы не было кз при
LastHopeMan писал(а):одновременно нажатые кнопки
Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.

Добавлено after 7 minutes:
LastHopeMan писал(а):...
--Цикл x от 1 до 4 по столбцам
....
Интереснее считать сразу порт и по маске определить нажатую кнопку.

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

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

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

Добавлено: Чт фев 23, 2017 10:43:55
LastHopeMan
pyzhman писал(а):Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.
Вы меня некачественно прочитали :))) Не говорил я такого.

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

Добавлено: Чт фев 23, 2017 11:01:00
pyzhman
Прочтите качественно моё предыдущее сообщение.

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

Добавлено: Чт фев 23, 2017 11:37:11
Zhuk72

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

Добавлено: Чт фев 23, 2017 12:13:58
LastHopeMan
pyzhman писал(а):Прочтите качественно моё предыдущее сообщение.
Хорошо, тыкну лапой.
pyzhman писал(а):LastHopeMan писал(а):
одновременно нажатые кнопки

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

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

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

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

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

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

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

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

Добавлено: Чт фев 23, 2017 19:11:22
LastHopeMan
pyzhman писал(а):Вы, очевидно, некачественно прочли моё сообщение. Ещё раз -
дабы не было кз при "одновременно нажатые кнопки". Это означает, что для того, чтобы не было короткого замыкания при одновременно нажатых нескольких кнопках, линии нужно развязать диодами. Что является подтверждением ваших слов -
Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь
Я как раз сразу во всем разобрался, в отличие от вас. Вы когда отвечали предыдущему оратору, то вместо его сообщения выдрали цитату из моего. Причем совершенно из другого контекста.
Неужели так сложно просто взять и прочитать с самого начала?

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

Добавлено: Пт фев 24, 2017 05:32:17
pyzhman
Суть вашего первого поста - необходимость использовать диоды для избежания кз при одновременно нажатых кнопках. Придерживаясь такого же мнения, я использовал ссылку на ваши слова. Очевидно, вы не качественно поняли смысл этого.

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

Добавлено: Пт фев 24, 2017 10:51:46
Ariadna-on-Line
Если применить выходы с открытым коллектором, то не надо диодов. Но входы должны быть с подтяжками в плюс.
Чтоб не заставлять проц постоянно опрашивать клаву, - наверно можно сделать обработку по прерыванию.

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

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

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

Добавлено: Пт фев 24, 2017 15:55:22
pyzhman
Однако вопрос ТС состоит
anten89 писал(а):...со стороны программы...
, а не со стороны железа.