Управление двумя сервоприводами с помощью джойстика на Arduino
В этом проекте мы создадим систему для управления двумя сервоприводами с использованием джойстика на базе Arduino. Проект включает подключение джойстика к аналоговым входам Arduino и сервоприводов к цифровым выходам. Джойстик позволяет управлять движением сервоприводов по осям X и Y, что может быть использовано для создания простого манипулятора или крана. Использование конденсаторов помогает стабилизировать питание сервоприводов, улучшая общую надежность системы. Этот проект является отличным примером базового управления сервоприводами и может служить основой для более сложных роботизированных систем.
Это отличный проект для тех, кто хочет изучить основы работы с сервоприводами и джойстиками, а также для создания простого манипулятора или крана.

Необходимые компоненты
Arduino Uno / Nano / Mega
Джойстик модуль (например, KY-023)
Два сервопривода (например, SG90)
Соединительные провода
Два конденсатора на 100 мкФ (рекомендуется)
Подключение компонентов

Обратите внимание
Конденсатор в данной схеме нам нужен для того, чтобы при включении сервопривода избежать просадки питания платы.
Не забывайте про то, что нужно соблюдать полярность элетролитического конденсатора. Короткая ножка (со стороны белой полосы на корпусе) — «минус».
Вы можете соединить провод сервопривода с макетной платой проводами «папа-папа»: коричневый это земля, красный — питание, оранжевый — сигнал.
Программирование Arduino
Ниже приведен полный код для управления двумя сервоприводами с помощью джойстика:
#include <Servo.h> // Подключаем библиотеку для работы с сервоприводами
Servo servoX; // Создаем объект для сервопривода оси X
Servo servoY; // Создаем объект для сервопривода оси Y
const int joyX = A0; // Пин для оси X джойстика
const int joyY = A1; // Пин для оси Y джойстика
int gr1 = 90; // Переменная для хранения угла поворота сервопривода оси X, начальное значение 90 градусов
int gr2 = 90; // Переменная для хранения угла поворота сервопривода оси Y, начальное значение 90 градусов
void setup() {
servoX.attach(2); // Подключаем сервопривод оси X к пину D2
servoY.attach(3); // Подключаем сервопривод оси Y к пину D3
servoX.write(90); // Устанавливаем начальное положение сервопривода оси X на 90 градусов
servoY.write(90); // Устанавливаем начальное положение сервопривода оси Y на 90 градусов
}
void loop() {
int xValue = analogRead(joyX); // Считываем значение оси X джойстика
int yValue = analogRead(joyY); // Считываем значение оси Y джойстика
if (xValue < 200 && gr1 < 180) { // Если значение оси X меньше 200 и угол сервопривода оси X меньше 180 градусов
gr1++; // Увеличиваем угол сервопривода оси X
servoX.write(gr1); // Устанавливаем новый угол сервопривода оси X
}
if (xValue > 700 && gr1 > 0) { // Если значение оси X больше 700 и угол сервопривода оси X больше 0 градусов
gr1--; // Уменьшаем угол сервопривода оси X
servoX.write(gr1); // Устанавливаем новый угол сервопривода оси X
}
if (yValue < 200 && gr2 < 180) { // Если значение оси Y меньше 200 и угол сервопривода оси Y меньше 180 градусов
gr2++; // Увеличиваем угол сервопривода оси Y
servoY.write(gr2); // Устанавливаем новый угол сервопривода оси Y
}
if (yValue > 700 && gr2 > 0) { // Если значение оси Y больше 700 и угол сервопривода оси Y больше 0 градусов
gr2--; // Уменьшаем угол сервопривода оси Y
servoY.write(gr2); // Устанавливаем новый угол сервопривода оси Y
}
delay(5); // Небольшая задержка для плавного управления
}
Этот проект показал, как легко можно создать простую и функциональную систему управления с использованием базовых компонентов Arduino. Он может служить основой для более сложных проектов, таких как роботизированные манипуляторы или системы автоматизации. Надеемся, что этот проект вдохновит вас на дальнейшие эксперименты и разработки с использованием Arduino.