|

Управление двумя сервоприводами SG-90 джойстиком

Всем привет!

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

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

Наш код будет принимать значения с джойстика, сопоставлять со значениями градуса для сервопривода (сопоставляются значения с джойстика и градус серво — 0-0, 1023-180), затем отправлять нужное значение на серво.

Дополнительно устанавливать библиотеки не нужно, нужна только одна библиотека Servo.h, но она уже предустановлена в IDE.

Код скопируйте вот здесь:

#include <Servo.h>

// Создаем объекты для сервоприводов
Servo servoX;
Servo servoY;

// Пины подключения
const int joyX = A0;    // Джойстик X-ось
const int joyY = A1;    // Джойстик Y-ось
const int servoPinX = 5; // Серво X (горизонталь)
const int servoPinY = 6; // Серво Y (вертикаль)

void setup() {
  // Прикрепляем сервоприводы к соответствующим пинам
  servoX.attach(servoPinX);
  servoY.attach(servoPinY);
}

void loop() {
  // Чтение значений с джойстика
  int xValue = analogRead(joyX);
  int yValue = analogRead(joyY);

  // Преобразование значений в градусы (0-180)
  int angleX = map(xValue, 0, 1023, 0, 180);
  int angleY = map(yValue, 0, 1023, 0, 180);

  // Управление сервоприводами
  servoX.write(angleX);
  servoY.write(angleY);

  // Небольшая задержка для стабильности
  delay(10);
}

Схема подключения представлена ниже. Сервоприводы обязательно нужно запитать от мощного источника питания, не от Arduino. Если запитать от платы, от USB, то сервоприводы не будут вращаться и питание на плате будет проседать. Я подключил БП на 12 вольт к плате и подключил сервы на 5V. Но рекомендую запитывать всё-таки от внешнего питания, не от Arduino.

Видео-демонстрация работы:

(скоро)

5/5 - (1 голос)


Поделись!