USB клавиатура - сколько кнопок макс. можно повесить на Arduino Leonardo?

Тема в разделе "Arduino & Shields", создана пользователем Yanson, 4 ноя 2015.

  1. Yanson

    Yanson Нуб

    Всем привет!
    Делаю панель с выносными кнопками клавиатуры для Elite Dangerous - основные функции - это 21 кнопка и пять светодиодов подтверждения - это слегка в два раза больше, чем есть разъемов у Leonardo на борту.

    Есть MEGA с кучей разъемов, но она без прошивки не симулирует клавиатуру (если я правильно понимаю).

    Подскажите, пожалуйста, решение, как реализовать 26 клавиш клавиатуры на Arduino?
    Спасибо заранее
     

    Вложения:

    • panel.png
      panel.png
      Размер файла:
      108,8 КБ
      Просмотров:
      841
  2. geher

    geher Гуру

    Вариантов на самом деле масса.
    1. Входные сдвиговые регистры. Можно получить любое количество кнопок.
    Есть ограничение по быстродействию при фантастических количествах кнопок. Для 21 кнопки ограничение и близко не актуально. Светодиоды можно повесить как на отдельные пины, так и на выходной сдвиговый регистр.
    2. Клавиатура на резисторах. Достаточно только одного пина на все кнопки.
    Тут уже есть некоторые сложности, которые тем больше, чем больше кнопок. Связано с изменением сопротивления резистора в зависимости от различных параметров (например, температура) и некоторым разбросом их номиналов из-за неточностей при производстве. Также есть ограничение по общему количеству кнопок на пине, обусловленное ограниченной разрядностью АЦП, шумностью его младших разрядов и нестабильностью питающего напряжения МК ардуины.
    3. Матричная клавиатура. Примерно как тут: http://amperka.ru/product/keypad-4x4, только число входов (для подачи высокого уровня при сканировании) и выходов (для определения уровня) может быть произвольным. Не только 4+4.
    Количество кнопок равно произведению количества использованных пинов на подачу напряжения и на определение уровня (квадрату половины общего количества задействованных пинов, если клавиатура с "квадратной" матрицей).
    Матрица 5х5 или 3х7 или 4х6 позволит использовать 21 кнопку (5х5 и 4х6 с запасом) и займет всего 10 пинов, т.е. цифровых на клавиатуру хватит. Диоды можно повесить на аналоговые пины (их тоже можно использовать как цифровые).
    Кстати, на картинке реально 18 кнопок (или переключателей, но это по сути та же кнопка, только с фиксацией состояний) и три потенциометра.
    Т.е. потенциометры пойдут на аналоговые входы, а кнопкам хватит матрицы 3х6 или 4х5 (9 занятых клавиатурой пинов).
    Есть ограничения на определяемое количество одновременно нажатых кнопок.
    4. разного рода готовые коммутаторы и расширители портов, управляемые через I2C или SPI
    5. Несколько ардуин, подключенных через последовательные порты.
    В случае использования Leonardo это два порта (аппаратный и SoftwareSerial). По 17 портов (цифровые плюс аналоговые без Rx и Tx) на дополнительную ардуину - более чем достаточно.
    6. Teensy 3.1. Умеет клавиатуру почти как Leonardo (возможно, отличается библиотека, используемая для управления этим добром). Входных пинов достаточно для всех кнопок и светодиодов, но некоторые придется подпаивать к площадкам снизу на плате.
     
    Последнее редактирование: 5 ноя 2015
  3. DrProg

    DrProg Вечный нерд

    Совсем недавно поднимали же тему. Без всяких регистров повесили 100 кнопок. Если надо больше, то регистры выручат, с ними хоть сколько, теоретически.
     
    ИгорьК и Yanson нравится это.