Джойстик модуль подключение к Arduino

Опубликовано 07.06.2013 20:14:00


В данной статье разберем устройство, приведем примеры программного кода для работы с джойстиком, а в конце, в качестве усложненного примера, поуправляем двумя сервоприводами с джойстика.

иллюстрация подключения джойстика к Arduino

 

 

Подключение к Arduino

Итак, по направлениям отклонения H (horizontal) и V (vertical), на плате джойстика установлены два потенциометра. Основываясь на их показаниях джойстик отслеживает отклонения влево, вправо, вверх, вниз и выдает аналоговый сигнал от 0 до 1023.

Ось Z посажена на кнопку и выдает цифровой сигнал (вкл/выкл).

 

Джойстик модуль имеет пятипиновый разъем стандарта 2.54мм:

VCC: "+" питания.

V: Вывод выходного аналогового сигнала по оси Y

H: Вывод выходного аналогового сигнала по оси X

KEY: Вывод выходного сигнала с кнопки

GND: "-" питания

 

Подключение модуля предельно просто: 

VCC на + 5 Вольт Arduino.

GND на любой из GND пинов­­­ Arduino.

H и V на любые аналоговые входы Arduino (в примере H подсоединен к A4, V к A5).

KEY к любому цифровому пину Arduino (в примере подсоединено к D2).

иллюстрация подключения джойстика к Arduino

 

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

 

пример программного кода:

const int Y_PIN = 5;           // Потенциометр оси Y подключен к аналоговому входу 5 
const int X_PIN = 4;           // Потенциометр оси X подключен к аналоговому входу 4
сonst int BUTTON_PIN = 2;      // Кнопка подключена к цифровому выводу 2 
float stepSize = 180F / 1024;  // Вычисляем шаг. градусы / на градацию 
// Угол поворота джойстика 180 градусов, АЦП выдает значения от 0 до 1023, всего 1024 градации 

void setup()
{
Serial.begin(9600);  // Скорость работы с монитором порта 
}

void loop()
{
int yVal = analogRead(Y_PIN);   // Задаем переменную yVal для считывания показаний аналогового значения
int xVal = analogRead(X_PIN);
float yAngle = yVal * stepSize; // Переводим выходные данные yVal в угол наклона джойстика (от 0 до 180)
float xAngle = xVal * stepSize; // Аналогично xVal
boolean isNotClicked = digitalRead(BUTTON_PIN);  // Считываем не было ли нажатия на джойстик
Serial.print("Horisontal angle = "); // Выводим текст 
Serial.println(xAngle);              // Выводим значение угла 
Serial.print("Vertical angle = ");
Serial.println(yAngle);
if (!isNotClicked)
{
Serial.println("Clicked");
}
delay(1000);
}

 

Открыв монитор порта мы видим значения которые выдает наш джойстик. Опираясь на эти данные уже можно собрать что-то интересное.

вывод значений в serial monitor

 

 

Для большей наглядности подключим 2 сервопривода (D9, D10) и пищалку (D12).
При включении дуины сервоприводы принимают положение 90°. Одна отвечает за отклонения по оси X, вторая по оси Y. При нажатии на кнопку срабатывает пищалка.

 

 
Пример программного кода

 


Набор для сборки 2ух осевого вращателя


 

Использованное в статье железо:

Плата Arduino, Сенсор шилд, Джойстик модуль, Пишалка модуль, Сервоприводы mini 9G

Соединительные провода "мама-мама"


 

Купить Купить в России  джойстик модуль


А как же комментарии?