#22. Подключаем к Arduino джойстик. Управление servo сервоприводом.
Сегодня в уроке подключим джойстик к Arduino UNO. И рассмотрим пару примеров использования джойстика в робототехнике:
Вывод данных о положении стика джойстика в монитор порта.
Управление свечением двух светодиодов с помощью джойстика.
Подключить джойстик и сервопривод к Arduino. Научимся управлять сервоприводами с помощью джойстика.
А для начала рассмотрим, что такое джойстик, из чего он состоит и как устроен.
Устройство аналогово джойстика и принцип работы.
Джойстик представляет из себя модуль, на который установлены 2 потенциометра и одна тактовая кнопка.
Управляет всем стик. При изменении положения стика по оси X - вращается потенциометр, выход которого outX, а при перемещении по оси Y - меняется значение потенциометра с выводом outY. По сути, это 2 потенциометра, с которых снимаем показания. Стик устроен таким образом, что он возвращается самостоятельно в центральное положение. Что обеспечивает центрование потенциометров. В данном состоянии джойстика на выходах outX, outY будет 511.
Но на практике это значение может быть другим, оно зависит от точности сборки, качества потенциометров и прочих факторов. Подробнее данную ситуацию рассмотрим на примере.
На плате установлена тактовая кнопка. Использовать ее или нет решать вам. При создании пульта для радиоуправляемой машинки я использовал данную кнопку для переключения режима работы: с джойстика или с акселерометра. Если интересно читайте на странице проекта: Машинка на радиоуправлении. Arduino + nrf24l01 + пульт.
Вывод данных о положении стика джойстика в монитор порта.
Для того, чтобы определить какие значения получает Arduino, когда мы отпустили стик джойстика и он установил свое центральное положение, выведем показания в монитор порта. Для этого подключим джойстик к Arduino UNO по схеме.
После чего нужно загрузить код в Arduino UNO.
В мониторе порта будут вот такие данные.
Как видите, они отличаются от 511. Показание отличаются на разных осях X=507, Y=510. Эти данные нам пригодятся в следующем примере.
Если мы подвигаем стик джойстика, то увидим изменение значений от 0 до 1023 по каждой оси.
На выходе мы получаем значение до 1023. Данный диапазон значений практически не применим в проектах на Ардуино, поэтому давайте приведем это значение к диапазону от 0 до 255, для этого воспользуемся функцией map().
После чего в мониторе порта мы получим вот такие значения.
Управление свечением двух светодиодов с помощью джойстика.
Чтобы усложнить ситуацию, сделаем так, чтобы светодиод не светился при центральном положении джойстика, а при отклонении джойстика светодиод плавно увеличивал яркость. Для этого нужно подключать светодиоды к пинам с ШИМ. Подключим джойстик и светодиоды к Ардуино по схеме.
Так как мы знаем значение при центральном положении стика, для оси Х это 507, а для оси Y 510, используя функцию map(), приведем к необходимому диапазону, например для оси Х от 507 до 1023 к диапазону от 0 до 255. Код будет вот таким.
Подключить джойстик и сервопривод к Arduino. Научимся управлять сервоприводами с помощью джойстика.
Джойстик часто используется для управления сервоприводами. Поэтому рассмотрим небольшой пример, в котором будем изменять угол положения двух servo подключённых к Arduino UNO по схеме.
Для данного примера устанавливать дополнительные библиотеки не нужно, так как библиотека servo устанавливается вместе с Arduino IDE.
Код для управления сервоприводами с помощью джойстика будет небольшим и достаточно простым.
Итог: Как видим из примеров, применение джойстика достаточно большое в разработке проектов на Arduino и в робототехнике.
Если вас интересует дополнительная информация о джойстике, пишите об этом в комментариях.
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.