Подключение двухосевого джойстика KY-023 к Arduino

Двухосевой джойстик KY-023Двухосевой джойстик (KY-023, PS2) — это модуль-манипулятор, состоящий из двух потенциометров и одной тактовой кнопки, позволяющий пользователю управлять различными устройствами (шасси, роботами), например для дистанционного управления двухкоординатным поворотным устройством видеокамеры, которое можно вращать в двух плоскостях.

Технические характеристики KY-023

  • Напряжение питания: 3,3 — 5 В
  • Выходное напряжение (VRx/VRy): 0 — 5 В (аналоговое)
  • Потребляемый ток: менее 5 мА
  • Сопротивление потенциометров: ~10 кОм на каждую ось
  • Рабочая температура: -10…+70 °C
  • Размеры: 40 мм х 26 мм х 32 мм

Распиновка KY-023

Схема подключения джойстика KY-023 к Arduino - Распиновка

Вывод Описание
GND Земля/общий
+5V/VCC Питание
VRX Аналоговый выход потенциометра оси X
VRY Аналоговый выход потенциометра оси Y
SW Выход кнопки

Принципиальная схема джойстика KY-023

Двухосевой джойстик KY-023 без шапки

Модуль двухосевого джойстика состоит из двух потенциометров на 10 кОм, определяющих положение осей X и Y. Изменение сопротивления осуществляется рычагом. Средняя нога каждого потенциометра выведена на контакты VRX и VRY, а вторая и третья ноги подключены к питанию и массе. Дополнительно установлена тактовая кнопка, показания снимаются с контакта SW, также предусмотрено посадочное место для подтягивающего резистора (R1).
Принципиальная схема джойстика KY-023

Для считывания данных с выводов VRX (ось X) и VRY (ось Y) необходимо использовать аналоговые порты Arduino. (значение от 0 до 5 В или от 0 до 1023), а для считывания данных с вывода SW используем цифровой порт (значение 0 В и 5 В или 0 и 1). Так как один вывод тактовой кнопки подключен к земле и при нажатии на джойстик вниз происходит замыкание цепи, но возможны ложные срабатывания (наводки). Для получения стабильных показаний, вывод SW необходимо подтянуть к питанию +5 В, через подтягивающий резистор R1 или использовать встроенный подтягивающий резистор.

Схема подключения джойстика KY-023 к Arduino

Для считывания значений с потенциометров джойстика будет использоваться пара аналоговых контактов на Arduino (A0 и A1) и цифровой вывод для считывания значений с кнопки.

KY-023 Arduino
GND GND
+5V 5V
VRx A0
VRy A1
SW 3

Схема подключения джойстика KY-023 к Arduino
В примере используется встроенный подтягивающий резистор (можно использовать и внешний, для этого необходимо добавить на модуль резистор R1, типа размера 0805). Подключаем провода, VRX к аналоговому порту A0, VRY к аналоговому порту A1, SW к цифровому порту 3, осталось подключить питание +5 В к выводу 5V и GND к GND на Arduino Pro Mini или Arduino Uno.

Пример скетча

Следующий скетч Arduino будет постоянно считывать значения с потенциометров и кнопки на KY-023 и преобразует их в значение напряжения (0-1023 -> 0V-5V). Перемещение джойстика вверх/вниз увеличит/уменьшит значение X, а перемещение джойстика влево/вправо увеличит/уменьшит значение Y. Нажмите на джойстик, чтобы активировать кнопку. Запускаем среду разработки и загружаем данный скетч, затем открываем мониторинг порта.

/*
  Пин к которому подключен VRX
*/
#define VRX A0
/*
  Пин к которому подключен VRY
*/
#define VRY A1
/*
  Пин к которому подключен SW
*/
#define SW 3

void setup() {
  /*
    Установим вывод SW как вход
  */
  pinMode(SW, INPUT);
  /*
    Включаем подтягивающий резистор
  */
  digitalWrite(SW, HIGH);
  /*
    Задаем скорость передачи данных
  */
  Serial.begin(9600);
}
void loop() {
  /*
    Создаем переменные
  */
  int xVal, yVal, swVal;
  /*
    Считываем значение с порта VRX
  */
  xVal = analogRead(VRX);
  /*
    Считываем значение с порта VRY
  */
  yVal = analogRead(VRY);
  /*
    считываем значение с порта SW
  */
  swVal = digitalRead(SW);
  /*
    Выводим текст
  */
  Serial.print("X = ");
  /*
    Выводим значение переменной xVal
  */
  Serial.println(xVal, DEC);
  /*
    Выводим текст
  */
  Serial.print("Y = ");
  /*
    Выводим значение переменной yVal
  */
  Serial.println(yVal, DEC);
  /*
    Выводим текст
  */
  Serial.print("Кнопка: ");
  /*
    Если swVal равно "1", кнопка не нажата
  */
  if (swVal == HIGH) {
    /*
      Выводим текст
    */
    Serial.println("не нажата");
  } else {
    /*
      Если swVal равно "0" кнопка нажата
    */
    Serial.println("нажата");
  }
  /*
     Ждем 500 мс.
  */
  delay(500);
}

Результат

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

Подключение двухосевого джойстика KY-023 к Arduino - Результат

1 комментарий к “Подключение двухосевого джойстика KY-023 к Arduino”

  1. Спасибо за информацию. Но остался вопрос — что подпружинивает джойстик , и возможно ли самостоятельно убрать «пружину»?

    Ответить

Оставьте комментарий

Отправляя комментарий, вы соглашаетесь с обработкой ваших данных (имя, адрес электронной почты, текст комментария) в соответствии с политикой конфиденциальности.