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

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

Управление серво джойстиком от Ардуино ► рассмотрим, как подключить к Arduino микро сервомотор и управлять им от джойстика ky-023 с готовыми примерами скетчей.

Как подключить к Ардуино сервопривод с джойстиком и написать программу для управления сервоприводом джойстиком от Arduino Uno рассмотрим в этом обзоре. Мы уже рассказывали, как управлять светодиодами с помощью модуля джойстика ky-023 и в данном примере скетч для микроконтроллера будет практически таким же, за одним небольшим исключением. А что изменилось в программе — читайте далее.

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

Для того, чтобы сделать управление сервомотора с помощью джойстика, необходимо первым делом подключить к аналоговым входам платы Arduino модуль ky-023. Это необходимо, чтобы АЦП микроконтроллера получало данные о положении джойстика по координатам X и Y в режиме реального времени. Затем, с помощью строчек кода, эти данные мы преобразуем в соответствующее положение микро сервопривода.

Джойстик представляет собой два потенциометра, которые меняют сопротивление в электрической цепи при изменении положения ручки. Поэтому на аналоговых входах Ардуино, куда мы подключим джойстик, будут цифровые значения от 0 до 1023, т.е. АЦП микроконтроллера преобразует значения напряжения от 0 до 5 Вольт в цифровые значения. Именно эти значения мы будем использовать для управления серво.

Как подключить к Ардуино серво с джойстиком

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • микро сервопривод;
  • джойстик ky-023;
  • провода «папа-папа», «папа-мама».
Схема подключения сервопривода к Ардуино с джойстиком
Схема подключения сервопривода к Ардуино с джойстиком

Подключите к плате Ардуино сервомотор и джойстик, согласно схеме, изображенной на картинке выше. И загрузите следующий скетч в микроконтроллер, позволяющий сделать плавное управление сервоприводом с помощью джойстика на Ардуино. В программе мы используем функцию map(), которая преобразует числовой диапазон значений 0-1023, в новый диапазон чисел 0-180 (угол поворота серво).

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

#define pinX A1       // ось X джойстика

#include <Servo.h> // подключаем библиотеку для серво
Servo servo1;           // объявляем объект servo1

void setup() {
   pinMode(pinX, INPUT); // указываем пин для джойстика

   servo1.attach(9);            // указываем пин для микро серво
}
 
void loop() {
   int X = analogRead(pinX);      // считываем значение оси X

   X = map(X, 0, 1023, 0, 180); // переводим значение X в новый диапазон
  
   servo1.write(X);                      // поворачиваем серво от джойстика
}

Пояснения к коду:

  1. с помощью map() можно задать любой диапазон чисел, в том числе обратный;
  2. обратите внимание, что у разных производителей распиновка джойстика может отличаться, от представленной выше схемы подключения модуля к плате.
Схема подключения двух сервоприводов к Ардуино с джойстиком
Схема подключения двух сервоприводов к Ардуино с джойстиком

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

#define pinX A1       // ось X джойстика
#define pinY A0       // ось Y джойстика

#include <Servo.h> // подключаем библиотеку для серво
Servo servo1;           // объявляем объект servo1
Servo servo2;           // объявляем объект servo2

void setup() {
   pinMode(pinX, INPUT); // указываем пин для джойстика
   pinMode(pinY, INPUT);  // указываем пин для джойстика

   servo1.attach(9);            // указываем пин для первого серво
   servo2.attach(11);         // указываем пин для второго серво
}
 
void loop() {
   int X = analogRead(pinX);      // считываем значение оси X
   int Y = analogRead(pinY);      // считываем значение оси Y

   X = map(X, 0, 1023, 0, 180); // переводим значение X в новый диапазон
   Y = map(Y, 0, 1023, 0, 180);  // переводим значение Y в новый диапазон
  
   servo1.write(X);                      // поворачиваем первый серво
   servo2.write(Y);                      // поворачиваем второй серво
}

Пояснения к коду:

  1. в данной программе мы лишь добавили новую локальную переменную int Y; для значений оси Y джойстика, чтобы управлять вторым серво.

Заключение. Таким образом, мы подробно рассмотрели, как используется Ардуино джойстик в управлении одним и двумя сервоприводами. Полученную информацию вы можете использовать для создания простых мини роботов на Arduino или машинок с дистанционным управлением от джойстика. Если у вас остались еще вопросы по рассмотренной теме — вы можете оставить их в комментариях под этой записью.

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи по теме:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *