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

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

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

  • Напряжение питания: 5 В
  • Поворот ручки: 360°
  • Размеры: 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), а для считывания данных с вывода RW используем цифровой порт (значение 0В и 5В или 0 и 1). Так-как один вывод тактовой кнопки подключен к земле и при нажатии на джойстик вниз, происходит замыкание цепи, но возможно ложные срабатывания (наводки). Для получения стабильных показаний, вывод RW необходимо подтянуть к питанию +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 к аналоговому порту А0, 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 - Результат

Купить джойстик KY-023 на AliExpress

Похожие записи

Комментарии 1

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

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

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