Имитация клавиатуры

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Ответить
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Имитация клавиатуры

Сообщение Тима »

Имеется такая дуина: http://www.ebay.com/itm/Leonardo-Pro-Mi ... 7986980%26
и такая клавиатура: http://www.ebay.com/itm/4-x-4-Matrix-Ar ... 4d0659e0ec
Требуется имитировать сигналы нажатия кнопок вверх, вниз, вправо, влево(для начала).
Вопрос: как это сделать?
Здесь http://arduino.cc/en/Reference/MouseKeyboard все на буржуйском, а я с ним не дружу...
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Имитация клавиатуры

Сообщение Mr.Kubikus »

Для работы с Arduino Leonardo в режиме эмуляции клавиатуры следует использовать библиотеку Keyboard library.

В вашем случае для начала надо перевести Arduino в режим эмуляции клавиатуры:

Код: Выделить всё

Keyboard.begin();
Затем, когда потребуется, вызывать функцию Keyboard.press(). Например, если требуется имитировать событие от нажатия на кнопку "ВВЕРХ":

Код: Выделить всё

Keyboard.press(KEY_UP_ARROW);
delay(100);
Keyboard.releaseAll();
Константа KEY_UP_ARROW определяет какое событие будет имитировано. Для других стрелок используйте следующие константы

Код: Выделить всё

KEY_UP_ARROW
KEY_DOWN_ARROW
KEY_LEFT_ARROW
KEY_RIGHT_ARROW
Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.
С уважением, Григорий
GitHub FB ВК
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Имитация клавиатуры

Сообщение Тима »

А при использовании клавиатуры http://www.ebay.com/itm/4-x-4-Matrix-Ar ... 4d0659e0ec как задавать условия?
И надо ли ставить подтягивающие резисторы?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Имитация клавиатуры

Сообщение Mr.Kubikus »

Похоже, что у нас в каталоге есть такая же клавиатура. Назначение контактов разъема этой клавы на картинке ниже:
fit0129-4x4-keypad.png
fit0129-4x4-keypad.png (12.67 КБ) 23122 просмотра
Клаву подключайте к дискретным входам и работайте с ней через библиотеку Keypad. Только в разделе конфигурации надо указать те пины, к которым вы подключились:

Код: Выделить всё

const byte rows = 4; // 4 ряда
const byte cols = 4; // 4 колонки
char keys[rows][cols] = {
  {'1','2','3', 'A'},
  {'4','5','6', 'B'},
  {'7','8','9', 'C'},
  {'*','0','#', 'D'}
};
byte rowPins[rows] = {5, 4, 3, 2}; // подключите эти пины к контактам, которые соединены с рядами клавы
byte colPins[cols] = {9, 8, 7, 6}; // а эти к колонкам
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );
Посмотрите примеры. Там, вроде, все просто.
С уважением, Григорий
GitHub FB ВК
Тима
Сообщения: 131
Зарегистрирован: 16 ноя 2012, 21:03

Re: Имитация клавиатуры

Сообщение Тима »

Mr.Kubikus писал(а): Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.
А можно по-подробнее? Что это и с чем его едят?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Имитация клавиатуры

Сообщение Mr.Kubikus »

Это удобно для отладки программы. Например, если Arduina вдруг начнет генерировать какие-нибудь смертельные последовательности нажатий на кнопки :) ?

Чтобы иметь возможность временно отключить функцию клавиатуры вешаете на любую дискретную ногу джампер или переключатель. Опрашиваете его в программе. Если на входе HIGH, то включаете имитацию клавы. Если LOW - выключаете. Теперь, если Ардуина взбесится, то её всегда можно отключить с помощью переключателя, но при этом она останется висеть на USB и можно будет обновить программу.
С уважением, Григорий
GitHub FB ВК
Ответить