Joystick Mouse Control — управление курсором мыши через джойстик
Управляйте курсором мыши на компьютере с помощью джойстика и Arduino Leonardo: кнопка включает и выключает режим управления.
С помощью библиотеки Mouse можно управлять курсором компьютера прямо с Arduino Leonardo, Micro или Due. В этом уроке джойстик двигает курсор, а отдельная кнопка включает и выключает режим управления — чтобы в любой момент можно было вернуть контроль над мышью.
Как это работает
Движение курсора через Arduino всегда относительное: каждый раз, когда считывается аналоговый сигнал, позиция курсора обновляется относительно текущего положения, а не абсолютных координат экрана.
Два аналоговых входа выдают значения от 0 до 1023. Скетч переводит их в диапазон от −12 до 12. Предполагается, что джойстик в покое находится примерно в центре диапазона, но реальные значения могут немного отличаться — для этого в коде предусмотрен порог нечувствительности.
Кнопка позволяет переключать управление мышью. Опционально можно подключить светодиод к пину 5 — он будет гореть, пока Arduino управляет курсором. Ещё одна кнопка на пине D3 с подтягивающим резистором 10 кОм к GND может имитировать левую кнопку мыши.
Примечание. Если хотите добавить светодиод или вторую кнопку, следуйте инструкциям для LED circuit и button circuit.
Важно! Как только вы вызываете команду
Mouse.move(), Arduino перехватывает управление курсором вашего компьютера. Чтобы не потерять контроль, обязательно настройте способ отключения ещё до вызоваMouse.move(). В этом скетче именно для этого и нужна кнопка-переключатель.
Необходимое оборудование
- Arduino Leonardo, Micro, or Due board
- Двухосевой джойстик
- Тактовая кнопка (может быть встроена в джойстик)
- Светодиод
- Резистор 220 Ом
- Резистор 10 кОм (если нужен подтягивающий)
Схема подключения
Подключите плату Leonardo к компьютеру кабелем micro-USB. Кнопка подключается к пину 6. Если вы используете готовый Joystick Shield (как на схеме ниже), подтягивающий резистор может не понадобиться — он уже встроен. Ось X джойстика подключается к A0, ось Y — к A1.

Схема подключения джойстика к Arduino Leonardo на макетной плате. Сигналы VER и HOR подаются на A0 и A1, SEL — на цифровой пин.
Принципиальная схема

Принципиальная схема: джойстик подключён к 5V и GND, VERT → A0, HORZ → A1, SEL (THUMB) → D2 или D3.
Код
Практические замечания
- Дрейф курсора. Если курсор медленно ползёт, когда вы не трогаете джойстик, — это нормально: реальный центр осей редко равен ровно 512. Увеличьте порог нечувствительности (
threshold) в коде. - Слишком быстрый или медленный курсор. Измените масштабирующий коэффициент в функции
map()— уменьшите максимальное значение для плавного движения или увеличьте для быстрого. - Arduino не определяется как мышь. Убедитесь, что используете именно Leonardo, Micro или Due: платы на ATmega328 (Uno, Nano) не поддерживают нативный USB-HID.
- Потеря управления курсором. Если скетч ушёл в цикл и кнопка не помогает — отключите USB или зажмите кнопку
Resetна плате.
Типичные ошибки
| Проблема | Причина | Решение |
|---|---|---|
| Курсор не двигается | Неверный пин оси или плата не Leonardo/Micro/Due | Проверьте подключение A0/A1 и тип платы |
| Курсор дрейфует в покое | Центр джойстика не равен 512 | Увеличьте threshold |
| Кнопка не переключает режим | Нет подтяжки к GND | Добавьте резистор 10 кОм или используйте INPUT_PULLUP |
| Светодиод не горит | Пин 5 не настроен как выход | Проверьте pinMode(5, OUTPUT) в setup() |
Как проверить результат
- Загрузите скетч на Leonardo.
- Нажмите кнопку — светодиод загорится, курсор начнёт реагировать на джойстик.
- Нажмите кнопку ещё раз — светодиод погаснет, курсор вернётся под управление обычной мыши.
- Подвигайте джойстик по осям X и Y — курсор должен двигаться плавно и пропорционально отклонению.
Дополнительные материалы
Больше базовых уроков — в разделе built-in examples.
Подробное описание всех функций языка Arduino — в language reference.