Команда press имеет односимвольный параметр, в котором ей можно передавать любые обычные символы или предопределенные константы, такие как KEY_LEFT_CTRL. После вызова команды press плата будет имитировать удержание клавиши в нажатом состоянии, пока не будет вызвана команда releaseAll. Полный список специальных клавиш можно найти по адресу http://arduino.cc/en/Reference/KeyboardModifiers.
ПРИМЕЧАНИЕ
При использовании функций эмуляции клавиатуры и мыши можно столкнуться со сложностями при программировании платы, так как она будет пытаться вводить текст, пока вы пытаетесь запрограммировать ее. Чтобы преодолеть эту проблему, примените следующий трюк: нажмите и удерживайте нажатой кнопку сброса Reset и отпустите ее, только когда в строке состояния Arduino IDE появится сообщение «uploading» («загрузка»).
Пример эмуляции клавиатуры
Следующий пример автоматически вводит текст по вашему выбору (например, пароль) после каждого сброса платы Arduino:
// sketch_11_01_keyboard
char phrase[] = "secretpassword";
void setup()
{
Keyboard.begin();
delay(5000);
Keyboard.println(phrase);
}
void loop()
{
}
Этот пример можно сделать эффективнее, если активировать ввод нажатием внешней клавиши: если вы пользуетесь компьютером Mac, операционная система будет думать, что в момент сброса платы к компьютеру подключается новая клавиатура, и выведет системный диалог, который нужно успеть закрыть до того, как плата напечатает текст.
Эмуляция мыши
Эмуляция мыши реализуется с применением того же шаблона, что и эмуляция клавиатуры. Вообще говоря, нет никаких причин, препятствующих эмуляции обоих устройств ввода в одном скетче.
Чтобы запустить эмуляцию, прежде всего следует выполнить команду
Mouse.begin();
Управление указателем мыши осуществляется командой Mouse.move. Она имеет три параметра: смещение по осям
Сымитировать щелчок мышью можно с помощью команды click. Без параметров эта команда имитирует щелчок левой кнопкой мыши. При желании ей можно передать аргумент MOUSE_RIGHT или MOUSE_MIDDLE.
Для управления длительностью щелчка можно использовать команды Mouse.press и Mouse.release. Команда Mouse.press принимает те же необязательные аргументы, что и команда Mouse.click. Эти две команды могут пригодиться, например, чтобы заставить свою «мышь» на основе Arduino выполнять щелчок при изменении состояния цифрового входа на плате. Кроме того, с их помощью можно сымитировать двойной или даже тройной щелчок.
Пример эмуляции мыши
Следующий пример перемещает указатель мыши по экрану в случайных направлениях. Чтобы прервать программу и восстановить управление компьютером, нажмите и удерживайте кнопку сброса Reset или просто отсоедините плату от компьютера.
// sketch_11_02_mouse
void setup()
{
Mouse.begin();
}
void loop()
}
int x=random(61)-30;
int y=random(61)-30;
Mouse.move(x, y);
delay(50);
}
Программирование хоста USB
Модели Leonardo, Due и Micro имеют возможность действовать как клавиатура или мышь, но только Due и менее известная модель Arduino Mega ADK позволяют подключать клавиатуру или мышь и использовать их в качестве устройств ввода. Эта особенность называется
Более того, если у вас имеется беспроводная клавиатура или мышь (за исключением моделей, подключаемых через Bluetooth), они также должны работать, если включить адаптер в разъем порта USB на плате расширения. Таким способом можно организовать беспроводное удаленное управление платой Arduino.
Хост USB позволяет подключать не только клавиатуру и мышь, но и множество других периферийных устройств USB: игровые джойстики, камеры, Bluetooth-устройства и даже телефоны на платформе Android.
Плата хоста USB и библиотека
Плата хоста USB и сопутствующие библиотеки созданы довольно давно и в настоящее время поддерживают широкий диапазон периферийных устройств. Первая плата хоста USB была разработана в Circuits@home (www.circuitsathome.com). Нынче доступны совместимые платы USB, производимые компаниями Sparkfun, SainSmart и, возможно, другими. На рис. 11.3 изображена плата Sparkfun USB Host, подключенная к Arduino Uno. Обратите внимание на то, что на момент написания данных строк эти платы были несовместимы с Arduino Leonardo, а также с другими моделями, более экзотичными, чем Uno. Поэтому перед приобретением убедитесь в совместимости плат.