Имеется такая дуина: 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: Имитация клавиатуры
Для работы с Arduino Leonardo в режиме эмуляции клавиатуры следует использовать библиотеку Keyboard library.
В вашем случае для начала надо перевести Arduino в режим эмуляции клавиатуры:
Затем, когда потребуется, вызывать функцию Keyboard.press(). Например, если требуется имитировать событие от нажатия на кнопку "ВВЕРХ":
Константа KEY_UP_ARROW определяет какое событие будет имитировано. Для других стрелок используйте следующие константы
Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.
В вашем случае для начала надо перевести Arduino в режим эмуляции клавиатуры:
Код: Выделить всё
Keyboard.begin();
Код: Выделить всё
Keyboard.press(KEY_UP_ARROW);
delay(100);
Keyboard.releaseAll();
Код: Выделить всё
KEY_UP_ARROW
KEY_DOWN_ARROW
KEY_LEFT_ARROW
KEY_RIGHT_ARROW
Re: Имитация клавиатуры
А при использовании клавиатуры http://www.ebay.com/itm/4-x-4-Matrix-Ar ... 4d0659e0ec как задавать условия?
И надо ли ставить подтягивающие резисторы?
И надо ли ставить подтягивающие резисторы?
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Имитация клавиатуры
Похоже, что у нас в каталоге есть такая же клавиатура. Назначение контактов разъема этой клавы на картинке ниже:
Клаву подключайте к дискретным входам и работайте с ней через библиотеку Keypad. Только в разделе конфигурации надо указать те пины, к которым вы подключились:
Посмотрите примеры. Там, вроде, все просто.
Клаву подключайте к дискретным входам и работайте с ней через библиотеку 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 );
Re: Имитация клавиатуры
А можно по-подробнее? Что это и с чем его едят?Mr.Kubikus писал(а): Рекомендую предусмотреть аппаратный переключатель или джампер, который будет переключать Arduino между нормальным режимом работы и режимом эмуляции клавиатуры. Иначе могут возникнуть проблемы при загрузке программ.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Имитация клавиатуры
Это удобно для отладки программы. Например, если Arduina вдруг начнет генерировать какие-нибудь смертельные последовательности нажатий на кнопки ?
Чтобы иметь возможность временно отключить функцию клавиатуры вешаете на любую дискретную ногу джампер или переключатель. Опрашиваете его в программе. Если на входе HIGH, то включаете имитацию клавы. Если LOW - выключаете. Теперь, если Ардуина взбесится, то её всегда можно отключить с помощью переключателя, но при этом она останется висеть на USB и можно будет обновить программу.
Чтобы иметь возможность временно отключить функцию клавиатуры вешаете на любую дискретную ногу джампер или переключатель. Опрашиваете его в программе. Если на входе HIGH, то включаете имитацию клавы. Если LOW - выключаете. Теперь, если Ардуина взбесится, то её всегда можно отключить с помощью переключателя, но при этом она останется висеть на USB и можно будет обновить программу.