KY-023 Joystick Module

Joy-IT / SIMAC (референс COM-KY023JM) · KY-023; документированный модуль Joy-IT COM-KY023JM

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

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьЛегко
Проекты с компонентом

О МОДУЛЕ

Что делает KY-023; документированный модуль Joy-IT COM-KY023JM

KY-023 использует два потенциометрических канала и отдельный выключатель под рукояткой. Документированный референс — Joy-IT COM-KY023JM. Совпадение надписи KY-023 у другого продавца не подтверждает его механические размеры или распайку.

Положение каждой оси передаётся напряжением, поэтому для Raspberry Pi без встроенного АЦП нужен внешний преобразователь. Значения в центре и на краях определяют для конкретного экземпляра; идеальные середина 512 и диапазон 0–1023 не гарантируются механикой. Для управления приводом полезны мёртвая зона, плавное ограничение команды и безопасное поведение при потере данных. Сам джойстик не является драйвером мотора.

В руководстве Joy-IT 2024 есть несогласованная фраза о полярности SW и опечатка в примере с переменной Button. Здесь принят описанный там же контакт SW на землю при нажатии, с подтяжкой и неизменным номером вывода. Полярность проверяют перед использованием в управлении.

KY-023, Joy-IT COM-KY023JM. Фото: Joy-IT; https://www.joy-it.net/de/products/COM-KY023JM. Лицензия на повторное использование не установлена. Исходная прозрачность сохранена; выполнены равномерное масштабирование и размещение на фоне SLDV LAB.

Схема соединений SLDV LAB показывает функции контактов для примера карточки; порядок строк не задаёт физическое расположение выводов.

Характеристики

Аналоговых осей
2
Кнопка под рукояткой
Да
Сигналы
VRx, VRy, SW
Интерфейс
Два аналоговых выхода и контакт кнопки
Калибровка
Центр, минимумы/максимумы и мёртвая зона определяются индивидуально
Питание модуля
Joy-IT показывает питание +5V от 5 В Uno и от 3,3 В в 3,3-вольтовой схеме. VRx/VRy зависят от питания; ESP32 подключают только при питании модуля от 3V3, не от 5 В.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
GNDGND Uno R3Общая земля.
+5V5V Uno R3В этом примере питание 5 В; надпись контакта не требует 5 В при работе с ESP32.
VRxA0 Uno R3Выход оси X.
VRyA1 Uno R3Выход оси Y.
SWD3 Uno R3INPUT_PULLUP; при нажатии контакт замыкает на землю.
Альтернатива ESP32 DevKitC / ESP32-WROOM-32+5V → 3V3; VRx → GPIO34; VRy → GPIO35; SW → GPIO27Общая GND; ADC1 на GPIO34/35. Настройте диапазон АЦП: даже безопасные 3,3 В могут давать насыщение; нужна калибровка, а не формула Uno.

Подходит для Arduino, ESP32. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать KY-023 Joystick Module (KY-023; документированный модуль Joy-IT COM-KY023JM) в мой проект. Сначала уточни точную плату контроллера, среду, маркировку и фото компонента, задачу и условия эксплуатации. Не переноси параметры референсного изделия на внешне похожий безымянный экземпляр.

Не копируй ошибку Button=digitalRead(Button) из исходного руководства. Выведи обе оси и кнопку, предусмотрев отдельную калибровку центра, диапазонов и мёртвой зоны. Сырые коды АЦП не являются точными координатами.

Подготовь согласованные распиновку, питание и уровни сигналов, необходимые зависимости, полный минимальный пример и пошаговую проверку. Объясни обработку дребезга, обрыва или недостоверных показаний, если это применимо. Для ESP32 уточни модификацию и доступные GPIO; 5 В на GPIO ESP32 недопустимы. Не заявляй о стендовом тестировании без результатов измерений.

Библиотеки

Ссылки на библиотеки для этой модели ещё не добавлены.

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Плата и API
Arduino Uno R3 / Arduino AVR Boards 1.8.6

Для приведённого полного скетча; сторонние библиотеки не нужны.

Аналоговые каналы
X=A0; Y=A1

Сырые значения 10-битного АЦП Uno, не углы и не измеренные вольты.

Кнопка
SW=D3; INPUT_PULLUP; active LOW

Не перезаписывайте константу номера вывода прочитанным состоянием.

Вывод
115200 baud / 50 ms

Период печати выбран в примере, кнопка опрашивается без delay.

Uno R3 · обе оси и кнопка

cpp
#include <Arduino.h>
constexpr uint8_t X_PIN = A0, Y_PIN = A1, SW_PIN = 3;
int swRaw, swStable;
unsigned long swChanged = 0, lastPrint = 0;
void setup() {
  Serial.begin(115200);
  pinMode(SW_PIN, INPUT_PULLUP);
  swRaw = swStable = digitalRead(SW_PIN);
  swChanged = millis();
}
void loop() {
  const unsigned long now = millis();
  const int raw = digitalRead(SW_PIN);
  if (raw != swRaw) { swRaw = raw; swChanged = now; }
  if (raw != swStable && now - swChanged >= 20) swStable = raw;
  if (now - lastPrint >= 50) {
    lastPrint = now;
    const int x = analogRead(X_PIN);
    const int y = analogRead(Y_PIN);
    Serial.print("X="); Serial.print(x);
    Serial.print(" Y="); Serial.print(y);
    Serial.print(" pressed="); Serial.println(swStable == LOW);
  }
}

Полный пример для Uno R3, API Arduino AVR Boards 1.8.6. Исправляет ошибки исходного примера, не копирует его как якобы испытанный. На оборудовании не запускался.

Калибровка перед управлением

text
1. Снимите по каждой оси значения при отпущенной рукоятке и на четырёх крайних направлениях.
2. Выберите мёртвую зону по разбросу в центре; сохраните реальные пределы и направление осей.
3. Проверьте SW: отпущен — HIGH, нажат — LOW. Если иначе, сверяйте распайку и подтяжку экземпляра.
4. Для ESP32 сначала измерьте максимальное напряжение VRx/VRy, затем проверьте отсутствие насыщения АЦП. Не переносите масштаб 1023 и опору 5 В из Uno.
5. Неподключённый аналоговый вход может показывать правдоподобное число: для ответственного управления добавьте диагностику и безопасный режим.

Это план первичной проверки, а не отчёт о выполненном испытании. Сначала работайте без нагрузки и без движущихся механизмов.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты