Тел. (495) 972-27-12

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

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY

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

Сообщение Тима » 21 июл 2013, 15:58

Имеется такая дуина: 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 все на буржуйском, а я с ним не дружу...
Тима
 
Сообщения: 119
Зарегистрирован: 16 ноя 2012, 21:03

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

Сообщение Mr.Kubikus » 22 июл 2013, 11:09

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

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

Code: [Выделить всё] [Expand/Collapse]
Keyboard.begin();
GeSHi © Codebox Plus


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

Code: [Выделить всё] [Expand/Collapse]
Keyboard.press(KEY_UP_ARROW);
delay(100);
Keyboard.releaseAll();
GeSHi © Codebox Plus


Константа KEY_UP_ARROW определяет какое событие будет имитировано. Для других стрелок используйте следующие константы

Code: [Выделить всё] [Expand/Collapse]
KEY_UP_ARROW
KEY_DOWN_ARROW
KEY_LEFT_ARROW
KEY_RIGHT_ARROW
GeSHi © Codebox Plus


Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.
С уважением, Григорий
GitHub FB ВК TW
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
 
Сообщения: 878
Изображения: 49
Зарегистрирован: 22 окт 2010, 23:57
Откуда: Москва

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

Сообщение Тима » 24 июл 2013, 10:50

А при использовании клавиатуры http://www.ebay.com/itm/4-x-4-Matrix-Ar ... 4d0659e0ec как задавать условия?
И надо ли ставить подтягивающие резисторы?
Тима
 
Сообщения: 119
Зарегистрирован: 16 ноя 2012, 21:03

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

Сообщение Mr.Kubikus » 24 июл 2013, 21:11

Похоже, что у нас в каталоге есть такая же клавиатура. Назначение контактов разъема этой клавы на картинке ниже:

fit0129-4x4-keypad.png


Клаву подключайте к дискретным входам и работайте с ней через библиотеку Keypad. Только в разделе конфигурации надо указать те пины, к которым вы подключились:

Code: [Выделить всё] [Expand/Collapse]
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 );
GeSHi © Codebox Plus


Посмотрите примеры. Там, вроде, все просто.
С уважением, Григорий
GitHub FB ВК TW
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
 
Сообщения: 878
Изображения: 49
Зарегистрирован: 22 окт 2010, 23:57
Откуда: Москва

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

Сообщение Тима » 25 июл 2013, 12:24

Mr.Kubikus писал(а):Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.

А можно по-подробнее? Что это и с чем его едят?
Тима
 
Сообщения: 119
Зарегистрирован: 16 ноя 2012, 21:03

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

Сообщение Mr.Kubikus » 25 июл 2013, 13:03

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

Чтобы иметь возможность временно отключить функцию клавиатуры вешаете на любую дискретную ногу джампер или переключатель. Опрашиваете его в программе. Если на входе HIGH, то включаете имитацию клавы. Если LOW - выключаете. Теперь, если Ардуина взбесится, то её всегда можно отключить с помощью переключателя, но при этом она останется висеть на USB и можно будет обновить программу.
С уважением, Григорий
GitHub FB ВК TW
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
 
Сообщения: 878
Изображения: 49
Зарегистрирован: 22 окт 2010, 23:57
Откуда: Москва


Вернуться в Arduino и Ко. ♥♥♥



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron