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

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

Сообщение anten89 »

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

Сообщение spongebob »

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

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

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

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

Сообщение LastHopeMan »

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

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

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

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

Сообщение pyzhman »

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

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

Сообщение spongebob »

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

Сообщение LastHopeMan »

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

Сообщение pyzhman »

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

Сообщение Zhuk72 »

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

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

Сообщение LastHopeMan »

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

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

Сообщение pyzhman »

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

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

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

Сообщение Albert_V »

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

Сообщение LastHopeMan »

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

Сообщение pyzhman »

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

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

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

Сообщение LastHopeMan »

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

Сообщение pyzhman »

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

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