Использовать светодиод или подтягивающий резистор для предотвращения «плавания» или «фантомного изображения» матричной клавиатуры?

Я знаю, что это звучит просто, но у меня есть Arduino Mega 2560, и я делаю матричную клавиатуру для когтистой машины. Это матричная клавиатура 3*4. Скажем так, я делаю эту клавиатуру для когтистой машины, чтобы уменьшить количество контактов ввода-вывода. Я пытался использовать мультиплексор, но это не помогло мне, потому что он имеет один вывод ввода-вывода и может читать только одну кнопку за раз. Итак, я придумал решение использовать матричную клавиатуру, потому что: A. Это самый распространенный метод и B. Он меньше по конструкции печатной платы, чем чип CD4067BE. Причина, по которой я пытался использовать этот чип в первую очередь, заключалась в том, что он включал все мои тринадцать кнопок. В принципе, я хочу знать, должен ли я использовать резистор или светодиод, чтобы остановить "плавающие" или "ореолы". Я до сих пор толком не знаю разницы между этими двумя терминами, но если бы кто-нибудь мог это прояснить, это было бы здорово. А также когда я должен использовать светодиод или резистор. Или они служат той же цели? Учебники: Светодиодный "ореол" Подтягивающий резистор "плавающий" (я не уверен, как сделать схему "плавающего" контакта). Schematic for the project (Кредит EasyEDA для схемы). Спасибо,

Остин

, 👍-2

Обсуждение

Светодиод-это диод, но диод-это не светодиод. Обратите также внимание, что матричные клавиатуры *также* сканируют (каждую строку, например, в примере, на который вы ссылаетесь). Я все еще озадачен тем, на какого человека вы нацелены, который может нажимать кнопки быстрее, чем Arduino может их сканировать., @Dave Newton

Но разве этот подход не быстрее? Разве я не получу от них более плавную езду на шаговом двигателе? Итак, что же мне делать с уменьшением количества выводов ввода-вывода из когтистой машины?, @Austin

И еще спасибо за быстрый ответ., @Austin

.. Вы говорите о разнице в микросекунды . В секунде миллион микросекунд. Люди действуют за десятые доли секунды. Десятая доля секунды равна ста тысячам микросекунд. Ни один человек не может даже *воспринять* эту разницу, не говоря уже о том, чтобы заботиться о ней. Есть сотни примеров создания клавиатур-просто следуйте одному из них., @Dave Newton

Должен ли я вернуться к тому, как было раньше? Только кнопки и INPUT_PULLUP?, @Austin

- подвел меня, потому что он имеет один вывод ввода-вывода и может считывать только одну кнопку за раз ... матричная клавиатура также считывается по одной кнопке за раз ... так происходит почти с каждым устройством, которое вы используете в повседневной жизни, например, с компьютерными клавиатурами, пультами дистанционного управления телевизором, микроволновыми печами и т. Д., @jsotola

Ой, извини. Я не был уверен., @Austin

Я действительно думаю, что должен вернуться к тому, как у меня была печатная плата раньше, к тому же у меня есть Мега. Что же может пойти не так, верно?, @Austin

Я думал, что смогу уменьшить наибольшее количество выводов ввода-вывода и сложность кнопок когтевой машины. Очевидно, я ошибался, это только усложняло ситуацию., @Austin

Хотя я думаю, что мог бы использовать матричный дизайн, потому что мой код показывает, что он все равно читает только одну кнопку за раз. (Для когтевой машины). Кроме того, я использовал CD4067BE., @Austin

попробуйте пойти с матричным расположением ... если он работает не так, как ожидалось, то перейдите к прямому подключению, одному коммутатору, одному контакту ... https://playground.arduino.cc/Code/Keypad/, @jsotola

Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/126517/discussion-between-austin-and-jsotola)., @Austin


1 ответ


Лучший ответ:

2

Сначала несколько уточнений:

  • Плавающий-это когда вход не подключен к определенному логическому состоянию. Он не находится ни в том, ни в другом состоянии и свободно "плавает" между ними по своему желанию. По сути, плавающий вход-это антенна.
  • Ореолы-это когда вы нажимаете две кнопки в матрице вместе, и это вызывает нежелательные короткие или скрещенные цепи в матрице, создавая впечатление, что другие клавиши нажимаются, когда их нет.

Библиотека Keypad.h имеет дело с любыми подтягиваниями, которые могут потребоваться. Чтобы предотвратить ореолы, вам нужно использовать диоды (не светодиоды), чтобы отделить кнопки друг от друга.

У Ника Гэммона есть фантастический учебник, где он описывает проблемы и решения ореолов.

,

Итак, почему я не могу использовать светодиоды, должен ли он "поглощать" больше, я думаю? Имеет ли библиотека клавиатуры внутренние подтягивающие резисторы?, @Austin

Почему на рядных выводах нет резистора?, @Austin

Библиотеки @Austin имеют код; аппаратное обеспечение имеет подтягивающие резисторы. Потому что строки являются выходными данными-читаются только столбцы. Пресса определяется путем вывода значения в строке и считывания всех столбцов. Читайте до конца :), @Dave Newton

Это *хорошая статья!, @Dave Newton

Итак, почему же я не могу использовать светодиоды?, @Austin

Светодиоды имеют огромное прямое напряжение по сравнению с обычными диодами. Они также больше, энергозатратнее и дороже., @Majenko