Mouse
Библиотека Mouse превращает совместимую плату Arduino в USB-мышь: управляет курсором, кнопками и колёсиком, используя относительное смещение.
Полная статья
Описание
Библиотека Mouse реализует поддержку USB HID-мыши прямо на плате Arduino. С её помощью скетч может двигать курсор, нажимать и отпускать кнопки, а также проверять, удерживается ли кнопка в данный момент.
Важная особенность: курсор перемещается относительно текущего положения, а не по абсолютным координатам экрана. Это означает, что Mouse.move(10, 0) сдвинет указатель на 10 единиц вправо от того места, где он находился в момент вызова — независимо от разрешения монитора или положения на рабочем столе.
Совместимое оборудование
Mouse работает только на платах с нативной поддержкой USB HID. Классические Uno и Mega не подойдут: их основной USB-разъём не поддерживает HID-режим.
| Плата | Поддерживаемые контакты |
|---|---|
| Leonardo | Все цифровые и аналоговые контакты |
| Micro | Все цифровые и аналоговые контакты |
| Arduino Due | Все цифровые и аналоговые контакты |
| Zero | Все цифровые и аналоговые контакты |
| UNO R4 Minima | Все цифровые и аналоговые контакты |
| UNO R4 WiFi | Все цифровые и аналоговые контакты |
| GIGA R1 Wi-Fi | Все цифровые и аналоговые контакты |
| Nano ESP32 | Все цифровые и аналоговые контакты |
| Семейство MKR | Все цифровые и аналоговые контакты |
Где применяется
- Самодельные устройства ввода: трекболы, джойстики, педали, альтернативные мыши для людей с ограниченными возможностями.
- Панели управления с физическими кнопками и колёсиком прокрутки.
- Автоматизация простых действий курсором на тестовых стендах.
- Учебные и демонстрационные проекты по теме USB HID.
Практические замечания
- Движение курсора относительное, поэтому накапливается: если вызывать
Mouse.move()в каждой итерацииloop()без условия, курсор будет непрерывно уходить в сторону. Всегда привязывайте команды мыши к чёткому событию — нажатию кнопки, порогу датчика или отдельному режиму работы. - Перед тем как подключать реальное управление курсором, проверьте логику скетча через
Serial.print(): убедитесь, что значения осей и условия срабатывания ведут себя так, как ожидается. Это сэкономит время и нервы. - Если скетч «потерял» курсор (он ушёл за пределы экрана), просто отключите плату от USB — курсор вернётся под управление обычной мыши.
- Библиотека не даёт возможности узнать абсолютные координаты курсора на экране: плата отправляет только относительные смещения, а операционная система сама вычисляет итоговое положение.
- Скорость перемещения зависит от того, как часто вызывается
Mouse.move()и какие значения смещений вы передаёте. Для плавного движения используйте небольшие значения иdelay()или таймер.