Использование джойстика - это один из способов обмена информацией между человеком и устройством (компьютер, микроконтроллер) на основе Arduino. Чаще всего их используют для управления механизмами или роботами. По аналогии с привычным игровым миром джойстики также часто называют геймпадами. Геймпад прост и удобен в использовании. Сегодня существует большое количество видов джойстиков по количеству степеней свободы, частоте считывания информации и используемой технологии. В данной статье мы рассмотрим Pin-Up популярный вариант, научимся управлению джойстиком и узнаем, как его подключать.
Содержание
Принцип работы джойстика

Подключение джойстика к ардуино
Подключение Pin-Up к Arduino Uno выполняется по схеме, приведенной ниже.
На модуле имеется 5 выходов - Vcc, Gnd, X, Y и Key (обозначения могут различаться в зависимости от Pin-Up
Данные по оси X выводятся на вход А0, по оси Y - на А1. Для визуального контроля нажатия Pin-Up также можно подключить светодиод D11. Питание осуществляется напряжением 5 Вольт. Пин GND присоединяется к такому же пину на плате Ардуино. Контакт SW можно подсоединить к любому цифровому пину.
Как видим, подключение модуля джойстика не сложно. Если устройство не работает после подключения, проверьте, Pin-Up ли вы подсоединили все пины.
Как Pin-Up текущее положение или направление джойстика
Для использования джойстка в реальном проекте нам понадобится написать скетч, чтобы обрабатывать данные, которые отправляет джойстик во Pin-Up своей работы.
Узнать, в каком положении в текущий момент находится устройство, можно в зависимости от значений потенциометров. Перемещение происходит по Pin-Up находящихся перпендикулярно осей X и Y. Считывание информации с геймпада происходит с помощьюфункции analogRead()- она показывает значения в диапазоне от 0 до 1023. В качестве аргументов ей поступают номера пинов, к которым произведено Pin-Up джойстика:
Pin-Up // показывает положение X координаты
Serial.println(analogRead(A1)); // показывает положение Y Pin-Up
Для удобства советуется использовать константы, чтобы уменьшить и упростить итоговый код. Pin-Up пины как раз можно объявить постоянными:
const byte PIN_ANALOG_X = A0; // постоянная для Pin-Up Х
const Pin-Up PIN_ANALOG_Y = A1; // постоянная для координаты Y
Определение направления движения джойстиком
Управление с помощью джойстика подразумевает собой то, что мы должны Pin-Up направление движения ручки джойстика. Для этого нам придется получить и интерпретировать данные по всем осям.
По значению Pin-Up осей X и Y можно узнать, находится ли джойстик в центре или произошло смещение. Значения во всех направлениях находятся в диапазоне от 0 до 1023, как говорилось ранее. В первую очередь приходит мысль, что центральная точка будет находиться примерно в значении 511-512. Это заключение не совсем правильно, так как абсолютно точное положение определить нельзя.
Неверное определение центрального значения может привести к тому, что будет получена ошибочная информация о движении джойстика, если он будет находиться в неподвижном состоянии. Для этого следует выбрать числовой диапазон и условно считать, что любое значение в нем Pin-Up центральной точкой. Значения нужно подстраивать под каждый вид джойстика, но примерно оно будет в диапазоне 505-518. Полученные значения записываются в код в виде постоянных:
const int X_THRESHOLD_LOW = 505;
const int X_THRESHOLD_HIGH = 518;
const int Y_THRESHOLD_LOW = 500;
const int Y_THRESHOLD_HIGH = 510;
Следующим шагом будет преобразование координат в диапазон от -1 до 1. Для X -1 - это перемещение влево, 0 - нет движения, 1 - вправо. По Y -1 - движение вниз, 0 - центральное значение, 1 - вверх. Изначально устанавливаем все значения в Pin-Up 0. Для проверки, происходит ли перемещение, используем выражения if
Подводные камни в работе геймпада
Как и с любое устройство, джойстики не лишены недостатков. В первую очередь, наличие пружины не позволяет ручке точно вернуться в центральное положение из-за трения в механических деталях. Это приводит к тому, что приходится программно Pin-Up центральное положение, вернее диапазон значений, в которых любая точка будет условно считаться серединой.
Второй проблемой можно назвать наличие так называемых мертвых Pin-Up Два крайних значения при наибольших отклонениях должно быть равным 0 В и напряжению питания. В действительности эти значения могут различаться, так как не используется весь электрический диапазон изменения сопротивления. Для решения этой проблемы крайние точки могут соответствовать значениям 1 кОм и 9 кОм.
Плата расширения JoyStick shield
Для управления роботами или другими механизмами иногда требуется использовать джойстик к кнопками и средствами коммуникаций. Для того, чтобы не придумывать каждый раз новые конструкции, рекомендуется купить готовую плату расширения ардуино для джойстика, в которой все необходимые элементы будут Pin-Up
Pin-Up что представляет собой этот шилд от известного в мире ардуино производителя Sparkfun. Данный геймпад работает исправно и стоит относительно недорого. Устройство может поставляться в немного разобранном виде, так что сначала его нужно собрать.


Шилд содержит несколько стандартных кнопок (4 обычных сбоку и кнопка выбора). В зависимости от модели, на плате могут быть добавлены разъемы для подключения модулей bluetooth или wifi. Традиционно, с помощью выходов пинов и гребенки Pin-Up подключать внешние устройства.
Заключение
Джойстик ардуино - незаменимая вещь во моих проектах. Благодаря этому виду Pin-Up вы можете добавить в свое устройство удобные и современные средства управления. В некоторых ситуациях без джойстика вообще обойтись практически невозможно: джойстик ардуино используется для управления роботами, умными машинами, сервоприводами, громкостью музыкой и яркостью подсветки на мониторе, как навигация в различных играх и во многих других проектах.
Подключение готового модуля не сложно, так же весьма доступным является и сам управляющий скетч. Чаще всего, джойстик используется в месте с кнопками и в паре с беспроводными интерфейсами, потому то управлять джойстиком на проводе быстро перемещающимися устройствами Pin-Up невозможно. Поэтому рекомендуется для работы использовать готовые шилды, в которых есть все необходимое.














