Клавиатура мутитач

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем ostrov, 16 окт 2016.

  1. Igor68

    Igor68 Гуру

    4-х диодов для данной схемы мало? Матрица-то всё равно ведь сканируется.
     
  2. AlexU

    AlexU Гуру

    Мало, если планируется обрабатывать нажатие нескольких кнопок в разных колонках и строках. Ранее в теме обсуждалось почему. Если нужно обрабатывать нажатие одной кнопки или нескольких кнопок, но в одной строке или в одной колонке, то ни какие диоды не понадобятся.
     
  3. ostrov

    ostrov Гуру

    Две кнопки определяется хорошо в любой комбинации. С большим количеством уже проблемы.
     
  4. Igor68

    Igor68 Гуру

    Даже если "перебирать" каждую пару строка-столбец ? Странно! Это прикол?
    i25_keyb1.png

    Интересно а почему эта схема работает?
    Это прикол!!! Точно!
    Простите за то, что я не понял вашего юмора!
     
    Последнее редактирование: 21 окт 2016
    Limoney нравится это.
  5. rkit

    rkit Гуру

    Но она ведь не работает. Из-за дурацкой подтяжки все неактивные строки придется подключать на землю, а значит даже двойного нажатия в одном столбце не осилит.
     
  6. Limoney

    Limoney Гик

  7. Igor68

    Igor68 Гуру

    Это вы сами придумали? Или сказал кто?! (Подтяжка только для входов KD0...KD4, Выходы (активный уровень LOW A8...A15 - но в единицу времени только один активный)
    Пример: нажаты "M" и "B". При наличии на выходе A15 уровня LOW (все остальные выходы HIGH) только на входах KD4("B") и KD2("M") будут уровни LOW, в то время, как на остальных входах (KD0,KD1,KD3) будут уровни HIGH. Это как раз маска входов для активного A15. Далее для A14 установить уровень LOW, а на все остальные HIGH и читаем маску входов. И так по циклу для всех. А по поводу подтяжки 10 кОм - и что это за нагрузочная способность выхода если он не в состоянии "просадить" на LOW пять параллельных резисторов по 10 кОм в случае нажатия всех кнопок на одном столбце.
    Для суеверных - кому хочется активный уровень HIGH - развернуть диоды на 180 градусов, а резисторы посадить на корпус вместо плюса. Для пугливых - поставьте не 10 кОм, а 22 кОм (хотя чаще встречал 6,8 кОм).
    А клавиатура работает! В своё время в ZX-Spectrum (по моему приведённая схема именно от него).
     
  8. AlexU

    AlexU Гуру

    Нет.
    Диоды VD1 - VD8 не спасут от ложного определения состояний кнопок, если при нажатии нескольких кнопок будет "пересечение строк и колонок," например, при одновременном нажатии кнопок '6','7','8' (колонка) и 'E','D','X' (строка), имеет место "пересечение колонки и строки" потому как кнопка '8' принадлежит одновременно колонке A12 и строке KD2. И при опросе колонок, устройство посчитает, что так же были нажаты кнопки 'T','G','V','R','F','C', т.е. кнопки на пересечении колонок A10,A9,A8 (кнопки 'E','D','X') и строк KD4,KD3 (кнопки '6','7').
    Повнимательней посмотрите на схему и при этом учтите, что ток течёт не только туда куда Вам хотелось бы...
     
  9. Igor68

    Igor68 Гуру

    ДА!! Но для этого надо чтобы одна кнопка принадлежала к двум колонкам и/или двум строкам, либо выставить активный уровень выхода более, чем на одном столбце.
    Простите - но это уже не смешно!
     
  10. rkit

    rkit Гуру

    Собери сам матрицу из четырех кнопок и попробуй. Или даже не кнопок, а просто перемычки руками тыкай. При нажатии трех кнопок сработает четвертая.
     
  11. Limoney

    Limoney Гик

    В каждый момент активна только одна колонка.
     
    Igor68 нравится это.
  12. Igor68

    Igor68 Гуру

    Про библиотеку только и могу просить глубочайшего прощения за свои слова - это верно (я её и не смотрел)! Но вот про эту схему - прощения просить не буду! Потому как опрос динамический - поочерёдный активный уровень на столбцах-выходах (с диодной развязкой) и циклом анализа уровня для каждого активного столбца в отдельности для каждого входа-строки. Да и клавиатура на компьютере вроде (будь 4 или 104 клавиши) работает без сбоев.
     
  13. rkit

    rkit Гуру

    Ну если палки, ну прочитайте что написано до этого. БЫЛО УЖЕ. НА ПЕРВОЙ ЖЕ СТРАНИЦЕ.
     
  14. Igor68

    Igor68 Гуру

    Разрешите всё-таки попросить прощение!
    Но.... ранее я работал только с ARM (Analog Devices и ATMEL тоже - особенно про ATMEL). Там выходы можно было настроить в режим с открытым коллектором, а входы с внутренней подтяжкой к плюсу. Для контроллера, что в ARDUINO наверное тоже (заметил, что периферия у ATMEL часто идентичная по настройкам). В этом случае диоды вовсе не нужны, а схема будет работать как упомянутая мной.
    С глубочайшим уважением!
    Ещё раз простите за невнимательность!
     
  15. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Я чего-то не понимаю, почему вариант с последовательным включением столбцов не подходит?
     
  16. Limoney

    Limoney Гик

    AVR так же порты настраиваются
     
    Igor68 нравится это.
  17. Igor68

    Igor68 Гуру

    Потому как надо или диоды или открытый коллектор - иначе при активном LOW активного выхода с других неактивных выходов будет поступать HIGH на матрицу и соответственно конфликт уровней на этой матрице при нажатии комбинации кнопок - одним словом перегрузка выходов, а кто из них сгорит не знаю.
     
    Максимус-Бог нравится это.
  18. ostrov

    ostrov Гуру

    Для того чтобы конфликтов не возникало, все порты и вход и выход конфигурируем в INPUT_PULLUP, таким образом получаем HIGH везде. Сканируем переключая колонки (или строки) в OUTPUT LOW и считываем пересекающиеся пины (строки или колонки соответственно). Конфликтов нет, ничего не горит, все работает до случая когда нажимаются 3 кнопки буквой Г. В этом случае LOW на сканирующей колонке продавливает и нажатые строки и соседнюю колонку через нажатые кнопки, таким образом просаживается и ненажатая кнопка. Стало быть получается ерунда.
     
  19. rkit

    rkit Гуру

    Вот простая матрица.
    Буфер обмена-1.jpg
    Нажимаем ABC, в результате контакты D тоже оказываются замкнутыми, только не прямо, а через через эти три кнопки.
    Буфер обмена-2.jpg
    И обойти это нельзя никак, кроме диодов.
    Неужели это так сложно понять?
     
  20. ostrov

    ostrov Гуру

    Не совсем очевидно, потому что сканирующие вертикали или горизонтали в LOW не одновременно а поочередно. Вот мозг и кипит. )