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

Матричная клавиатура на N*M кнопок с управлением в 1 провод

Добавлено: Вт авг 12, 2014 12:08:13
vladlen-from-vrtp
На рисунке схема для 4*4, а здесь выложил проект в протеусе.

Я сделал для PICа, но понятное дело, что можно под любой камень использовать.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Ср авг 20, 2014 15:30:09
Gisteresis
Только быстродействие опроса такой клавы минимальное. Тут вообще каждый выбирает компромисс между количеством задействованных ножек и скоростью опроса.
Вообще видел много реализаций клавиатуры, есть даже на АЦП, там вроде тоже проводов почти нет.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Чт авг 21, 2014 16:12:28
vladlen-from-vrtp
Время опроса до последней кнопки, при тактовой 4МГц на PIC12F675, что-то около 6мс.
А 6мс для клавиатуры - это же моргнул и уже сотни полторы символов напечатало.
И еще один хороший момент, по-моему, что можно не заморачиваться особо с антидребезгом в силу принципа работы.
И сам алгоритм опроса примитивный очень, так как по первому нулю на входе, получаем автоматом номер кнопки.

В случае с АЦП кроме кнопок еще получается столько же резисторов нужно.

А так, например, даже для 64 кнопок нужно 16 диодов, 10 резисторов, конденсатор и два регистра.
На контактов для пайки меньше.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 08:16:16
Gisteresis
Никто и не спорит. Хороший вариант. Но, все зависит от применения. На АЦП, хоть и требуется резистивная матрица, но метод быстрее. Или я ошибаюсь?
Для большинства применений, предложенный вами метод, конечно предпочтительней.
Изголяться придется когда время действительно критично, например устройство типа денди, с клавиатурой, дисплеем, звуком... Хотя при таком применении наверное уже имеет смысл отдельный контроллер клавиатуры поставить.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 08:28:46
vladlen-from-vrtp
Думаю если сравнивать с учетом обработки дребезга, то смысла в большей быстроте АЦП не так много остается.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 08:38:25
Gisteresis
А почему у вас не нужно делать проверку дребезга?
А 6мс для клавиатуры - это же моргнул и уже сотни полторы символов напечатало.
Это одна буква введена.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 09:22:58
vladlen-from-vrtp
Что-то не понял про одну букву.

С дребезгом, там ведь как, во время опроса закидываем элемент массива и смотрим, что на выходе.
А кнопка влияет на выход только когда загружен элемент соответствующий этой кнопке, в любой другой момент она не влияет ни как вообще.
Опрос мы запускаем с удобным для нас периодом, по переполнению от таймера например.
То есть кнопка сможет повлиять на выход как минимум только через 6мс (для моего случая с PIC12F675 на 4МГц), а это уже сравнимо с длительностью самого дребезга для хорошей кнопки.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 11:29:38
Gisteresis
Вы сказали, что время полного опроса клавиатуры занимает 6мс. Это время ввода всего одного символа а не полторы сотни символов.
То есть кнопка сможет повлиять на выход как минимум только через 6мс (для моего случая с PIC12F675 на 4МГц), а это уже сравнимо с длительностью самого дребезга для хорошей кнопки.
А, вот что вы имели в виду.
Об этом я и сказал, что каждые 6мс может быть дребезг. Например первый опрос кнопка зажалась, второй отпустилась, третий опять зажалась.
Но это я просто обратил внимание на это, достаточно ли этого на практике я не знаю.

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 16:17:31
Microtech
Здорово придумано. :) Но вот основной процессор должен всё время опрашивать кнопки, а RC цепочка на линии данных, вносит ограничения на тайминги. Выкрутиться можно, идея хорошая.
На подобную задачку я ставил мелкий AVR (AtTiny2313), он опрашивал кнопки классически, с бегущей единицей, с подавлением дребезга + автоповтор. Слал коды кнопок через UART. Бяка была в том, что при таком решении, основной контроллер и периферийные (клавиатура), должны синхронизироваться кварцами. Все попытки настроить калибровки на RC генераторе, давали 20% отказов. Когда попало, от температуры и просто так. :(

Re: Матричная клавиатура на N*M кнопок с управлением в 1 про

Добавлено: Пт авг 22, 2014 17:35:41
vladlen-from-vrtp
Наверное, это будет хорошо для каких-нибудь тормозных задач наподобие часов.
Во время выставления начальных значений торопиться некуда, вызываем KeyScan каждые 100мс, например.
Тупо, а зато кнопки можно удобно вынести без лишнего жгута проводов.

Думал вообще питание для регистра брать из линии данных, чтобы похоже было на 1-wire.
То есть плюс еще один диод с конденсатором и минус один провод.
Но не уверен.