Управление сервоприводом с помощью джойстика на ардуино

В проекте реализовано управление двумя серводвигателями с использованием джойстика и Arduino.

Управление джойстиком очень удобное и интуитивно понятное. Особенно для подобных проектов с двумя степенями свободы. Более детально с особенностями настройки и управлением джойстиком вы можете в соответствующей статье на Arduino-diy.com.

Необходимые материалы

  • Плата Arduino (в данным случае используется Arduino Uno Rev 3).
  • 2 сервы Parallax.
  • Джойстик — тоже от Parallax.
  • Маленькая монтажная плата.
  • Коннекторы для подключения.
  • Что-то для отслеживания перемещений серводвигателей (например, здесь используются поломанная веб-камера и кубики от лего. Детально в статье эти узлы не рассматриваются, но на фото видно).

Проект в собранном виде показан на рисунке ниже:

Управление сервоприводом с помощью джойстика на ардуино

Подключаем серводвигатели

Начнем с подключения двух серводвигателей (для предварительного макета используется монтажная плата. В последствии можно сваять отдельный шилд).

На рисунке ниже представлена исчерпывающая информация про подключение.

Управление сервоприводом с помощью джойстика на ардуино

Красный кабель двигателей (питание) — к пину 5V на Arduino

Черный кабель двигателей (земля) — к пину GND на Arduino

Желтый кабель от двигателя Right & Left (на некоторых моделях он белого цвета) — к пину 11.

Желтый кабель от двигателя Up & Down (на некоторых моделях он белого цвета) — к пину 4.

Не забывайте, что коннекторы управляющего сигнала на сервоприводах должны подключаться к ШИМ выходам Arduino.

Подключаем джойстик

Представленная на рисунке ниже схема подключения может вас немного смутить. Но поверьте, все не так сложно как кажется на первый взгляд. Опять таки для подключения используем монтажную плату.

Управление сервоприводом с помощью джойстика на ардуино

1. На модуле джойстика один выход U/R+ и один L/R+. Это выходы для подключения питания. Эти выходы подключаются к пину 5V на Arduino.

2. Также есть два разъема L/R и два разъема U/D. Они подключаются к аналоговым входам А3 и А4.

3. Земля на джойстике подключается к земле на Arduino.

Не забудьте перепроверить подключение. Помните, что большинство ошибок в проектах возникает именно из-за неправильного подключения. Особенно если вы используете монтажную плату, которая обрастает кучей коннекторов.

Скетч для Arduino

Основные пояснения к скетчу приведены в комментариях. Приведенный ниже код достаточно скопировать и вставить в Arduino IDE. После загрузки скетча на плату, сервопривода не должны двигаться, пока вы не используете джойстик.

const int servo1 = 3; // первая серва

const int servo2 = 10; // вторая серва

const int joyH = 3; // выход L/R джойстика Parallax

const int joyV = 4; // выход U/D джойстика Parallax

int servoVal; // переменная для хранения данных с аналогового пина

Читайте также:  Как сделать стол для бильярда

Servo myservo1; // создаем объект Servo для управления первой сервой

Servo myservo2; // создаем объект Servo для управления второй сервой

myservo1.attach(servo1); // подключаем серву

myservo2.attach(servo2); // подключаем серву

// Инициализация серийного протокола связи

// отображаем значения с джойстика с использованием серийного монитора

// считываем значение с джойстика по горизонтали (значение между 0 и 1023)

servoVal = map(servoVal, 0, 1023, 0, 180); // масштабируем полученное значение для использования с серводвигателем (результат возвращается в диапазоне от 0 до 180)

myservo2.write(servoVal); // выводим ротор сервы в положение в соответствии с полученным масштабированным значением

// считываем значение джойстика вдоль вертикальной оси (значение от 0 до 1023)

servoVal = map(servoVal, 0, 1023, 70, 180); //масштабируем полученное значение для использования с сервой (диапазон: от 70 до 180)

myservo1.write(servoVal); // выводим ротор второй сервы в соответствии с полученным масштабированным значением

delay(15); // ждем, пока серва обеспечит заданное положение

* отображаем значения джойстика

Результат представлен на видео ниже:

Возможные проблемы и их решение

1. Сервы не двигаются.

Проверьте подключение. Не забывайте, что для подключения серв используются ШИМ выходы, а для джойстика — аналоговые.

2. После загрузки скетча на Arduino, сервы начинают вибрировать.

Скорее всего, неправильно подключены пины U/D+ L/R+. Очень внимательно проверьте подключение. Перед проверкой контактов и подключения, обязательно отключите Arduino от персонального компьютера, чтобы случайно не спалить привода или плату.

3. Я внимательно проверил подключение, но серводвигатели все равно не двигаются.

Отключите джойстик и попробуйте его подключить заново. При этом джойстик лучше снять с монтажной платы. При повторной установке прижмите его с некоторым усилием к монтажной плате. Коннекторы от джойстика должны хорошо сесть на макетку.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

В проекте реализовано управление двумя серводвигателями с использованием джойстика и Arduino.

Управление джойстиком очень удобное и интуитивно понятное. Особенно для подобных проектов с двумя степенями свободы. Более детально с особенностями настройки и управлением джойстиком вы можете в соответствующей статье на Arduino-diy.com.

Необходимые материалы

  • Плата Arduino (в данным случае используется Arduino Uno Rev 3).
  • 2 сервы Parallax.
  • Джойстик — тоже от Parallax.
  • Маленькая монтажная плата.
  • Коннекторы для подключения.
  • Что-то для отслеживания перемещений серводвигателей (например, здесь используются поломанная веб-камера и кубики от лего. Детально в статье эти узлы не рассматриваются, но на фото видно).

Проект в собранном виде показан на рисунке ниже:

Управление сервоприводом с помощью джойстика на ардуино

Подключаем серводвигатели

Начнем с подключения двух серводвигателей (для предварительного макета используется монтажная плата. В последствии можно сваять отдельный шилд).

На рисунке ниже представлена исчерпывающая информация про подключение.

Управление сервоприводом с помощью джойстика на ардуино

Красный кабель двигателей (питание) — к пину 5V на Arduino

Читайте также:  Как часто поверяют электросчетчики

Черный кабель двигателей (земля) — к пину GND на Arduino

Желтый кабель от двигателя Right & Left (на некоторых моделях он белого цвета) — к пину 11.

Желтый кабель от двигателя Up & Down (на некоторых моделях он белого цвета) — к пину 4.

Не забывайте, что коннекторы управляющего сигнала на сервоприводах должны подключаться к ШИМ выходам Arduino.

Подключаем джойстик

Представленная на рисунке ниже схема подключения может вас немного смутить. Но поверьте, все не так сложно как кажется на первый взгляд. Опять таки для подключения используем монтажную плату.

Управление сервоприводом с помощью джойстика на ардуино

1. На модуле джойстика один выход U/R+ и один L/R+. Это выходы для подключения питания. Эти выходы подключаются к пину 5V на Arduino.

2. Также есть два разъема L/R и два разъема U/D. Они подключаются к аналоговым входам А3 и А4.

3. Земля на джойстике подключается к земле на Arduino.

Не забудьте перепроверить подключение. Помните, что большинство ошибок в проектах возникает именно из-за неправильного подключения. Особенно если вы используете монтажную плату, которая обрастает кучей коннекторов.

Скетч для Arduino

Основные пояснения к скетчу приведены в комментариях. Приведенный ниже код достаточно скопировать и вставить в Arduino IDE. После загрузки скетча на плату, сервопривода не должны двигаться, пока вы не используете джойстик.

const int servo1 = 3; // первая серва

const int servo2 = 10; // вторая серва

const int joyH = 3; // выход L/R джойстика Parallax

const int joyV = 4; // выход U/D джойстика Parallax

int servoVal; // переменная для хранения данных с аналогового пина

Servo myservo1; // создаем объект Servo для управления первой сервой

Servo myservo2; // создаем объект Servo для управления второй сервой

myservo1.attach(servo1); // подключаем серву

myservo2.attach(servo2); // подключаем серву

// Инициализация серийного протокола связи

// отображаем значения с джойстика с использованием серийного монитора

// считываем значение с джойстика по горизонтали (значение между 0 и 1023)

servoVal = map(servoVal, 0, 1023, 0, 180); // масштабируем полученное значение для использования с серводвигателем (результат возвращается в диапазоне от 0 до 180)

myservo2.write(servoVal); // выводим ротор сервы в положение в соответствии с полученным масштабированным значением

// считываем значение джойстика вдоль вертикальной оси (значение от 0 до 1023)

servoVal = map(servoVal, 0, 1023, 70, 180); //масштабируем полученное значение для использования с сервой (диапазон: от 70 до 180)

myservo1.write(servoVal); // выводим ротор второй сервы в соответствии с полученным масштабированным значением

delay(15); // ждем, пока серва обеспечит заданное положение

* отображаем значения джойстика

Результат представлен на видео ниже:

Возможные проблемы и их решение

1. Сервы не двигаются.

Проверьте подключение. Не забывайте, что для подключения серв используются ШИМ выходы, а для джойстика — аналоговые.

Читайте также:  Какая мощность котла на дом 150 кв

2. После загрузки скетча на Arduino, сервы начинают вибрировать.

Скорее всего, неправильно подключены пины U/D+ L/R+. Очень внимательно проверьте подключение. Перед проверкой контактов и подключения, обязательно отключите Arduino от персонального компьютера, чтобы случайно не спалить привода или плату.

3. Я внимательно проверил подключение, но серводвигатели все равно не двигаются.

Отключите джойстик и попробуйте его подключить заново. При этом джойстик лучше снять с монтажной платы. При повторной установке прижмите его с некоторым усилием к монтажной плате. Коннекторы от джойстика должны хорошо сесть на макетку.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Завалялась у меня arduino nano (качественный китайский клон от RobotDyn). А тут на днях так же из Китая пришли сервомотор и манипулятор, а так же нашлось время, чтобы немного разобраться с этим. Итак, цель у меня была простая: соединить arduino nano, сервомотор и джойстик, и заставить сервомотор поворачиваться при повороте джойстика. В практических целях это можно использовать, например, для управления поворотом камеры.

Управление сервоприводом с помощью джойстика на ардуино

Управление сервоприводом с помощью джойстика на ардуино

Управление сервоприводом с помощью джойстика на ардуино

Как оказалось, это не так уж и сложно. Схема подключения следующая:

1. Подключение Arduino и сервомотора:

  • коричневый (на моем сервомоторе) провод — земля (gnd);
  • красный провод — 5v;
  • оранжевый провод — 8 пин.

2. Подключение Arduino и джойстика:

  • gnd — gnd;
  • 5v — 5v (я подключил к 3.3v);
  • VRX (сигнал для координат по оси X) — A1;
  • VRY (сигнал для координат по оси Y) — A0;
  • SW (режим кнопки — нажата или отпущена) — 2 пин.

Соединяем все наши чуда китайского производства, подключаем arduino к компьютеру, открываем Arduino IDE, заливаем скетч, указанный ниже. После загрузки скетча можно двигать манипулятором в стороны, сервомотор будет поворачиваться .

Управление сервоприводом с помощью джойстика на ардуино

При подключении джойстика к питанию 3.3V значение по умолчанию для X и Y позиций было 330 (при подключении к 5V значения могут быть другие), для проверки значений текущих показаний и я взял отклонение от начального значения в 30 единиц.

Отследить значения аналоговых сигналов можно с помощью монитора серийного порта (открыть его можно так: инструменты -> монитор порта или CTRL + SHIFT + M). Для этого в функции setup() необходимо написать следующее:

В функции loop() написать следующее:

Вот видео того, что получилось:

Итак, в данной статье рассмотрен процесс подключения сервомотора и джойстика к Arduino Nano, приведен пример скетча. В дальнейшем я планирую подключить второй сервомотор, чтобы польностью использовать возможности джойстика и осуществлять поворот по осям X и Y.