100 кнопок
- Войдите на сайт для отправки комментариев
Вс, 26/09/2021 - 11:32
Добрый день!
Появилась задача сделать плату, на которой размещалось бы 100 кнопок (5 рядов, 20 колонок). При этом, важно , чтобы можно было обрабатывать одновременные нажатия клавиш (не более 5, но в любых рядах и колонках). В целом, надо чтобы в порт уходило что-то такое: [0,2][0,4][2,2]
Мысли как сделать такое следующие:
1) Использовать парочку больших мультиплексоров типа AS-6408.
2) Использовать несколько МК, считывающих аналоговые значения, подключенных к родительскому МК.
Подскажите, какой из вариантов целесообразнее и есть ли какие-либо другие варианты?
Спасибо!
Стандартная матричная схема.
Только диоды нужны последовательно для фиксации нескольких.
Стандартная матричная схема.
Для матричной схемы нужно 5 + 20 аналоговых входов. Те МК что я видел - это обычно не более 15 входов.
Для матричной схемы не нужно аналоговых входов.
Понял, то есть, в принципе достаточно что-то типа arduino mega 2560, у которой аж 54 цифровых входа.
Спасибо!
Ардуино Про Мини + один hc595 + 8 диодов шоттки достаточно.
Ардуино Про Мини + один hc595 + 8 диодов шоттки достаточно.
Спасибо, ушёл читать.
Ардуино Про Мини + один hc595 + 8 диодов шоттки достаточно.
Если сделать матрицу 10х10 , то ардуины мини хватит одной без диодов и сдвигового регистра, а коды по UART выдавать.
Да, с 10х10 покрасивее будет, но А6/А7 придётся задействовать (либо XTAL, либо РЕСЕТ)).
Ардуино Про Мини + один hc595 + 8 диодов шоттки достаточно.
Если сделать матрицу 10х10 , то ардуины мини хватит одной без диодов и сдвигового регистра, а коды по UART выдавать.
Сдается мне, что пинов все-таки не хватит
Сдается мне, что пинов все-таки не хватит
Хватит, но надо или ресет через фьюзы в порт превратить или тактировать от внутреннего генератора, а выводы на кварц тоже можно в порты перефьюзить. Но тогда надо будет пайкой на плате ардуины заняться.
Диоды в матричной схеме ставятся на каждую кнопку.
Включая RX и TX
Тогда проще свою плату развести и голый камень поставить ))
Диоды в матричной схеме ставятся на каждую кнопку.
Нет
Насколько я понимаю, если нужны одновременные нажатия на кнопки - то диоды, всё таки, ставятся на каждую кнопку.
Насколько я понимаю, если нужны одновременные нажатия на кнопки - то диоды, всё таки, ставятся на каждую кнопку.
Нет, достаточно на столбцы. А можно и вообще без них, если неактивные столбцы переводить в INPUT
ЗЫ: речь не о том, что ЕСЛИ требуется, а о защите от дурака
Хватит, но надо или ресет через фьюзы в порт превратить или тактировать от внутреннего генератора, а выводы на кварц тоже можно в порты перефьюзить. Но тогда надо будет пайкой на плате ардуины заняться.
Нет, всё же легче аналоговые А6/А7 использовать. Достаточно одного. Тактирование АЦП повысить, разрешение понизить. Да и скорость преобразования тут не особо нужна.
Нет, достаточно на столбцы. А можно и вообще без них, если неактивные столбцы переводить в INPUT
ЗЫ: речь не о том, что ЕСЛИ требуется, а о защите от дурака
Это защита выходов. А если нужно определять н-ное кол-во нажатых клавиш, то диоды нужны с каждой.
если нужно определять н-ное кол-во нажатых клавиш, то диоды нужны с каждой.
Нет. Кнопки в одном столбце замыкаются каждая на свой ряд и перемыкание между собой на результат не влияет. Кнопки в разных столбцах защищены диодами на столбцах
если нужно определять н-ное кол-во нажатых клавиш, то диоды нужны с каждой.
Нет. Кнопки в одном столбце замыкаются каждая на свой ряд и перемыкание между собой на результат не влияет. Кнопки в разных столбцах защищены диодами на столбцах
Теперь нарисуй и посмотри
Теперь нарисуй и посмотри
Показывай, замыкание каких кнопок приведет не фейлу
Показывай, замыкание каких кнопок приведет не фейлу
На картинке в добавок к нажатым кнопкам 4 и 7 нажмите кнопку 5. Сработает и кнопка 8.
Диоды нужны всем.
И что это вообще за чушь придумана с диодами? Солнце, ты в курсе, что пин можно просто перевести в режим input, и он не будет выдавать ничего?
А если использовать регистры 74HC165 с параллельной загрузкой и последовательно выгрузкой. Соединяете последовательно 13 штук, подцепляете к SPI, и, опрашиваете 104 кнопки.
a.b.c,d - это выходы как я понимаю.
rkit чет ты с темы начинаешь съезжать.
Мальчик, посмотри сообщение #16, а потом спрашивай глупости.
На картинке в добавок к нажатым кнопкам 4 и 7 нажмите кнопку 5. Сработает и кнопка 8.
Да, уел ))) Три кнопки не осилит
То есть вместо того. чтобы объяснить, как правильно сделать, объясняем, как приделать костыль на случай, если сделано неправильно.
Хватит, но надо или ресет через фьюзы в порт превратить или тактировать от внутреннего генератора, а выводы на кварц тоже можно в порты перефьюзить. Но тогда надо будет пайкой на плате ардуины заняться.
С внутренним генератором UART не взлетит.
С внутренним генератором UART не взлетит.
Ну да, у меня на ATtiny13/85 летает, а на 328-й не взлетит...
можно ещё камень на 328pb перепаять/купить ардуину 328PB там вроде А6 и А7 дигитал
А что, взять старую клаву религия не позволяет? Не нравится вид - выцарапать микросхему, и к ней свои кнопки. Там куча нажатий и повтор и антидребезг.
Только ТС нужно фиксировать одновременные нажатия кучи клавиш, а PS/2 клавиатура это не обеспечивает, только выборочных. А значит огород, а ходовые все плёночные... Спасут только из серии ЕС-ЭВМ.)))
С внутренним генератором UART не взлетит.
Не взлетит в условиях крайнего севера.)
Если бы Вам хватило 7*7*2=98 кнопок, то хватило бы и (7+1)+(7+1)=16 ножек, ключевое слово "чарлиплексинг".
Вы бы расшифровали формулы.) Классический чарлиплексинг требует всего 11 пинов для 110 кнопок. Но. Для фиксации одновременно нажатых кнопок нужен АЦП, в данном случае 11-ти канальный.) Уже разбирали.
Хм, я думал про классическую схему туда-сюда (конечно, с диодами на каждый ключ), где общее количество объектов сканирования равно (количество строк/столбцов -1)**2*2, для нашего случая (8-1)*(8-1)*2=98.
Вообще то нет. n * n - n, или аналогично: n * (n - 1).
Ардуино Про Мини + один hc595 + 8 диодов шоттки достаточно.
можно схему а то так непонятно. что в регистр гнать, откуда читать? тож интересует.
Матрица 20х5. Т.к. пинов не достаточно, расширяем за счёт hc595 (всего на 5 пинов!). Получаем 12 + 3 (управление 595) и 5 входов, всего 20. В 595-м, как и на 12-ти выходах поочередно гоняем 0 по кругу, активизируя строки (или столбцы) матрицы и смотрим ответ на входах. Диоды на выходе 595 для защиты, т.к. не имеет 3-го состояния.
о найс, так понятно. спасибо.
На 328, то есть на Уно/Нано. С легкостью 385 кнопок. ;))) И УАРТ сохраняем.
Без УАРТ у нас 11 цифровых выходов и 7 аналоговых входов. Делаем стандартную матрицу сканирования 11х7=77. С диодом на каждую кнопку. Только вместо кнопки ставим матрицу R/2R на 5 кнопок. Читаем с паузами на перезарядку, как по ДШ положено. На цикл опроса нам нужно сделать 77 аналоговых чтений. С паузой в 100мкс укладываемся в 10 мс на цикл опроса, что вполне эргономично.
В теории у нас АЦП на 10 разрядов, значит имеем право проектировать в каждом элементе матрицу R/2R на 9 кнопок... но мы же все всё понимаем? Помехи, кривые резисторы и прочее. На 5 или 6 кнопок - совершенно точно будет ОК.
Даже больше! 12 цифровых х 8 аналоговых.)
Через HC595 я понял как и что нужно делать, в принципе, ничего сложного. Удобная, надо сказать штука.
Однако, вопрос: в интернетах я прочитал, что можно подключить не один, а два и более HC595.
Т.е. фактически, для получения 20 входов на матрице, необходимо 4x HC595, и всего используя только 3 цифровых выхода МК.
Насколько это разумно? Просто остальные выходы также могут пригодиться.
Решение о целесообразности расширителей принимать вам. Кроме 595 есть и другие (PCF8574 например), которые могут расширять не только выходА, но и входА. А раньше клавиатуру вообще на рассыпухе делали - данные и готовность на выходе. И даже в ASCII, и даже с автоповтором, и даже с индикаторами.
Решение о целесообразности расширителей принимать вам. Кроме 595 есть и другие (PCF8574 например), которые могут расширять не только выходА, но и входА. А раньше клавиатуру вообще на рассыпухе делали - данные и готовность на выходе. И даже в ASCII, и даже с автоповтором, и даже с индикаторами.
Про целесообразность - я имею ввиду, не создаст ли такая схема в теории каких-либо проблем в плане глюков?
И по поводу самой схемы - так я и не понял, диод на каждую клавишу или всё - таки достаточно на ряд?
Напомню - что необходимо проверять до 5 одновременных нажатий.
С маркировкой диода не поможете?
Боюсь, у вас не взлетит...(
Для чего такая матрица и почему до 5-ти нажатий одновременно?
Может подскажем другое решение.
И по поводу самой схемы - так я и не понял, диод на каждую клавишу или всё - таки достаточно на ряд?
Достаточно - на каждую контактную пару.
С маркировкой диода не поможете?
Любые импульсные: КД503, КД510, КД512 и подобные, либо 1N4148.