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

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
anten89
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср ноя 23, 2016 09:50:36

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

Сообщение anten89 »

Вот делаю клавиатуру для пика:
Изображение
растолкуйте мне принцип работы с такой клавиатурой со стороны программы, то есть как осуществлять опрос и т.д.
Реклама
spongebob
Грызет канифоль
Сообщения: 289
Зарегистрирован: Пт мар 20, 2009 12:25:47
Откуда: Ivanovo
Контактная информация:

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

Сообщение spongebob »

Диодов не хватает каждой кнопке.
И читай динамический опрос.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

Конкретно, что не понятно ?
Аватара пользователя
LastHopeMan
Вымогатель припоя
Сообщения: 529
Зарегистрирован: Пт сен 30, 2016 05:52:37

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

Сообщение LastHopeMan »

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

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

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

Если особо изловчиться, то можно определять даже две одновременно нажатые кнопки. Для этого вам потребуется хранить всю матрицу в массиве, чтобы при анализе нового нажатия вы могли также учитывать существующее. Но это головняк и без особой необходимости лучше считать несколько нажатых кнопок как отсутствие нажатия.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

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

Добавлено after 7 minutes:
LastHopeMan писал(а):...
--Цикл x от 1 до 4 по столбцам
....
Интереснее считать сразу порт и по маске определить нажатую кнопку.
Docendo discimus
Реклама
spongebob
Грызет канифоль
Сообщения: 289
Зарегистрирован: Пт мар 20, 2009 12:25:47
Откуда: Ivanovo
Контактная информация:

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

Сообщение spongebob »

На каждой кнопке.
Иначе при одновременном нажатии 3х и более кнопок будут ложные срабатывания.
Представьте что вы нажали кнопки с адресами 1.1, 3.1, 3.3
При опросе первой строки окажутся на выходе "нажатыми" 1.1 и 1.3 (хотя 1.3 и не нажата).
П.с. это если есть вероятность одновременного нажатия 3-х и более. Если 2 и более, то на строки(столбцы). Если 1, то ничего не надо.
Реклама
Аватара пользователя
LastHopeMan
Вымогатель припоя
Сообщения: 529
Зарегистрирован: Пт сен 30, 2016 05:52:37

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

Сообщение LastHopeMan »

pyzhman писал(а):Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.
Вы меня некачественно прочитали :))) Не говорил я такого.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Прочтите качественно моё предыдущее сообщение.
Docendo discimus
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
LastHopeMan
Вымогатель припоя
Сообщения: 529
Зарегистрирован: Пт сен 30, 2016 05:52:37

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

Сообщение LastHopeMan »

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

Только не каждой кнопке, а каждому столбцу или строке, в зависимости от того, куда вы подаете опрашивающий сигнал.
LastHopeMan писал(а):Поэтому, на одну из координат по диоду шоттки воткните, а со стороны другой координаты подтяните к земле (если отсутствием сигнала будет считаться земля)
Так что ваш косяк :music:
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Вы, очевидно, некачественно прочли моё сообщение. Ещё раз -
дабы не было кз при "одновременно нажатые кнопки". Это означает, что для того, чтобы не было короткого замыкания при одновременно нажатых нескольких кнопках, линии нужно развязать диодами. Что является подтверждением ваших слов -
Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь
Docendo discimus
Аватара пользователя
Родэрик
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы
Контактная информация:

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

Сообщение Родэрик »

Думаю, качественнее всего было бы наверное использовать ацп для такого количества кнопок. А одновременные нажатия не использовать, тем более судя по всему такая клавиатура скорей всего для ввода пароля понадобится, либо такие нажатия, если они присутствуют в задумке, программно заменить на какой-нибудь иной алгоритм. Тогда и программа проще станет и ног меньше под это дело уйдёт.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Если нет желания ставить на кнопки диоды - сделайте так, что бы в любой момент времени выходом был только один из 8-ми выводов (остальные 7 - входы).
Программа немного усложнится, но деталей на плате будет меньше (особенно, если использовать встроенную "подтяжку" к Vdd /PULL-UP/).
Аватара пользователя
LastHopeMan
Вымогатель припоя
Сообщения: 529
Зарегистрирован: Пт сен 30, 2016 05:52:37

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

Сообщение LastHopeMan »

pyzhman писал(а):Вы, очевидно, некачественно прочли моё сообщение. Ещё раз -
дабы не было кз при "одновременно нажатые кнопки". Это означает, что для того, чтобы не было короткого замыкания при одновременно нажатых нескольких кнопках, линии нужно развязать диодами. Что является подтверждением ваших слов -
Сигналы при этом будут контактировать друг с другом и на выходе у вас будет дичь
Я как раз сразу во всем разобрался, в отличие от вас. Вы когда отвечали предыдущему оратору, то вместо его сообщения выдрали цитату из моего. Причем совершенно из другого контекста.
Неужели так сложно просто взять и прочитать с самого начала?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Суть вашего первого поста - необходимость использовать диоды для избежания кз при одновременно нажатых кнопках. Придерживаясь такого же мнения, я использовал ссылку на ваши слова. Очевидно, вы не качественно поняли смысл этого.
Docendo discimus
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

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

Сообщение Ariadna-on-Line »

Если применить выходы с открытым коллектором, то не надо диодов. Но входы должны быть с подтяжками в плюс.
Чтоб не заставлять проц постоянно опрашивать клаву, - наверно можно сделать обработку по прерыванию.
Аватара пользователя
LastHopeMan
Вымогатель припоя
Сообщения: 529
Зарегистрирован: Пт сен 30, 2016 05:52:37

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

Сообщение LastHopeMan »

Или применить ТТЛ микросхемы включая счетчик, но по размеру проигрываем.
Например, так https://www.youtube.com/watch?v=5H5WsxCqO9A
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Однако вопрос ТС состоит
anten89 писал(а):...со стороны программы...
, а не со стороны железа.
Docendo discimus
Ответить

Вернуться в «PIC»