Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right USB chevron_right Joystick Mouse Control — управление курсором мыши через джойстик

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()

Как проверить результат

  1. Загрузите скетч на Leonardo.
  2. Нажмите кнопку — светодиод загорится, курсор начнёт реагировать на джойстик.
  3. Нажмите кнопку ещё раз — светодиод погаснет, курсор вернётся под управление обычной мыши.
  4. Подвигайте джойстик по осям X и Y — курсор должен двигаться плавно и пропорционально отклонению.

Дополнительные материалы

Больше базовых уроков — в разделе built-in examples.

Подробное описание всех функций языка Arduino — в language reference.