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

Необходимые компоненты
- 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.