Обзор
KY-023 — это двухосевой модуль джойстика, который обеспечивает аналоговые выходы для положений по осям X и Y, а также цифровой выход для встроенной тактовой кнопки. Он идеально подходит для приложений, требующих направленного управления, таких как пульты дистанционного управления, игровые интерфейсы и навигация роботов.
KY-023 — это устройство ввода, объединяющее два потенциометра и кнопочный переключатель. Каждая ось соответствует потенциометру, который выдает аналоговое напряжение, считываемое микроконтроллерами. Модуль широко используется в робототехнике, играх и интерактивных проектах.
О двухосевом модуле джойстика KY-023
KY-023 — это универсальный модуль управления, который объединяет два потенциометра (для осей X и Y) и тактовую кнопку в одном компактном корпусе. Он позволяет реализовать плавное аналоговое управление в двух измерениях, что делает его незаменимым для джойстиков, контроллеров и систем управления движением.
Приобретите KY-023
Характеристики KY-023
Полные технические характеристики двухосевого модуля джойстика KY-023.
Распиновка KY-023
KY-023 представляет собой 5-контактный модуль джойстика с интегрированной кнопкой:
- Интерфейс — Двойной аналоговый выход + цифровая кнопка.
- Оси — Потенциометры осей X и Y (диапазон 0-3.3В или 0-5В).
- Кнопка — Встроенная тактовая кнопка (активный низкий уровень при нажатии).
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | GND | Питание | Общий провод (земля) | |
| 2 | +5V | Питание | Напряжение питания | 3.3В или 5В |
| 3 | VRx | Выход | Аналоговый выход оси X | Напряжение зависит от положения |
| 4 | VRy | Выход | Аналоговый выход оси Y | Напряжение зависит от положения |
| 5 | SW | Выход | Сигнал кнопки | Активный LOW при нажатии |
Подключение KY-023 к ESP32
Для сопряжения KY-023 с ESP32 для ввода данных с джойстика:
| Вывод KY-023 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| GND обязательно | → | GND | Земля |
| +5V обязательно | → | 3.3V | Питание (для ESP32 используйте 3.3В) |
| VRx обязательно | → | GPIO36 | Аналоговый вход оси X |
| VRy обязательно | → | GPIO39 | Аналоговый вход оси Y |
| SW опционально | → | GPIO34 | Вход кнопки (нужна подтяжка) |
Устранение неполадок KY-023
Распространённые проблемы и их решения для модуля джойстика.
Джойстик не отвечает
Нет изменений в аналоговых показаниях
Решения:
- Проверьте надежность всех соединений.
- Убедитесь, что на модуль подается правильное напряжение (3.3В или 5В).
- Проверьте, правильно ли сконфигурированы выводы аналогового входа микроконтроллера.
- Проверьте джойстик мультиметром, чтобы подтвердить работу потенциометров.
Кнопка не регистрирует нажатия
Цифровой вход не меняется
Решения:
- Убедитесь, что вывод SW подключен к цифровому входу, настроенному с подтягивающим резистором.
- Проверьте непрерывность цепи кнопки с помощью мультиметра.
- Подтвердите правильность конфигурации пина в коде.
Советы по отладке
Serial монитор
Проверка значений
Дополнительные ресурсы
Примеры программирования KY-023
Готовые к использованию примеры кода для различных платформ и фреймворков.
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
// Объявление и инициализация входных контактов
int JoyStick_X = A0; // Сигнал оси X
int JoyStick_Y = A1; // Сигнал оси Y
int Button = 3; // Кнопка
void setup() {
pinMode(JoyStick_X, INPUT);
pinMode(JoyStick_Y, INPUT);
pinMode(Button, INPUT_PULLUP); // Включить внутренний подтягивающий резистор
Serial.begin(9600); // Серийный вывод со скоростью 9600 бит/с
}
void loop() {
float x, y;
int buttonState;
// Считать текущие значения и преобразовать в вольты
x = analogRead(JoyStick_X) * (5.0 / 1023.0);
y = analogRead(JoyStick_Y) * (5.0 / 1023.0);
buttonState = digitalRead(Button);
// Вывести значения
Serial.print("Ось X:"); Serial.print(x, 4); Serial.print("В, ");
Serial.print("Ось Y:"); Serial.print(y, 4); Serial.print("В, ");
Serial.print("Кнопка:");
if (buttonState == HIGH) {
Serial.println("не нажата");
} else {
Serial.println("нажата");
}
delay(200);
}
Этот код Arduino считывает аналоговые значения осей X и Y джойстика KY-023 и цифровое состояние кнопки. Затем он выводит соответствующие уровни напряжения и состояние кнопки в монитор порта.
Пример для ESP-IDF
Официальный фреймворк для ESP32
C++
Пример для ESP-IDF
Официальный фреймворк для ESP32
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/adc.h"
#include "driver/gpio.h"
#define JOYSTICK_X ADC1_CHANNEL_0 // GPIO36
#define JOYSTICK_Y ADC1_CHANNEL_3 // GPIO39
#define BUTTON GPIO_NUM_34
void app_main(void) {
adc1_config_width(ADC_WIDTH_BIT_12);
adc1_config_channel_atten(JOYSTICK_X, ADC_ATTEN_DB_11);
adc1_config_channel_atten(JOYSTICK_Y, ADC_ATTEN_DB_11);
gpio_set_direction(BUTTON, GPIO_MODE_INPUT);
gpio_pulldown_en(BUTTON);
printf("Тест джойстика KY-023\n");
while (1) {
int x_value = adc1_get_raw(JOYSTICK_X);
int y_value = adc1_get_raw(JOYSTICK_Y);
int button_state = gpio_get_level(BUTTON);
printf("X: %d, Y: %d, Кнопка: %s\n", x_value, y_value, button_state ? "Не нажата" : "Нажата");
vTaskDelay(pdMS_TO_TICKS(200));
}
}
Этот код ESP-IDF считывает аналоговые значения с осей X и Y джойстика KY-023 с помощью ADC1 на GPIO36 и GPIO39. Он также отслеживает состояние кнопки на GPIO34 и выводит данные в консоль каждые 200 мс.
Пример для ESPHome
YAML конфигурация
YAML
Пример для ESPHome
YAML конфигурация
sensor:
- platform: adc
pin: GPIO36
name: "Ось X Джойстика KY-023"
update_interval: 200ms
- platform: adc
pin: GPIO39
name: "Ось Y Джойстика KY-023"
update_interval: 200ms
binary_sensor:
- platform: gpio
pin:
number: GPIO34
mode: INPUT_PULLUP
name: "Кнопка Джойстика KY-023"
Эта конфигурация ESPHome настраивает модуль джойстика KY-023 на ESP32. Она считывает значения осей X и Y как аналоговые входные данные и фиксирует нажатия кнопок на GPIO34.
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
main.cpp
#include <Arduino.h>
#define JOYSTICK_X A0
#define JOYSTICK_Y A1
#define BUTTON 3
void setup() {
pinMode(JOYSTICK_X, INPUT);
pinMode(JOYSTICK_Y, INPUT);
pinMode(BUTTON, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("Тест модуля джойстика KY-023");
}
void loop() {
int x_value = analogRead(JOYSTICK_X);
int y_value = analogRead(JOYSTICK_Y);
int button_state = digitalRead(BUTTON);
Serial.printf("X: %d, Y: %d, Кнопка: %s\n", x_value, y_value, button_state ? "Не нажата" : "Нажата");
delay(200);
}
Этот код PlatformIO считывает аналоговые значения осей X и Y джойстика KY-023 и фиксирует нажатия кнопки. Он выводит показания в последовательный монитор каждые 200 мс.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
import machine
import time
JOYSTICK_X = machine.ADC(machine.Pin(36))
JOYSTICK_Y = machine.ADC(machine.Pin(39))
BUTTON = machine.Pin(34, machine.Pin.IN, machine.Pin.PULL_UP)
JOYSTICK_X.atten(machine.ADC.ATTN_11DB)
JOYSTICK_Y.atten(machine.ADC.ATTN_11DB)
while True:
x_value = JOYSTICK_X.read()
y_value = JOYSTICK_Y.read()
button_state = BUTTON.value()
print("X:", x_value, "Y:", y_value, "Кнопка:", "Не нажата" if button_state else "Нажата")
time.sleep(0.2)
Этот скрипт MicroPython считывает аналоговые значения осей X и Y джойстика KY-023 с помощью ADC на GPIO36 и GPIO39. Он также отслеживает нажатия кнопок на GPIO34 и выводит результаты каждые 200 мс.
Итоги KY-023
Двухосевой джойстик **KY-023** — это надежное и простое в использовании устройство ввода для ваших проектов на ESP32 и Arduino. Благодаря поддержке нескольких платформ разработки он является универсальным выбором для создания игровых контроллеров, систем управления роботами и других интерактивных интерфейсов.
Рекомендации
Всегда калибруйте джойстик при запуске программы, программно определяя среднюю точку. Это поможет избежать "дрейфа" и обеспечит точное управление.
Безопасность
Перед включением проверьте требования к источнику питания и надежность всех соединений, чтобы избежать повреждения модуля или микроконтроллера.
Готовы к работе?
Теперь у вас есть все необходимое, чтобы интегрировать KY-023 в ваш проект на ESP32!
Изучите другие модули

KY-022 Модуль ИК-приемника
Модуль KY-022 способен обнаруживать ИК-сигналы с частотой 38 кГц, что идеально подходит для систем дистанционного управления.

KY-008 Лазерный передатчик
KY-008 излучает красный лазерный луч с длиной волны 650 нм.

KY-025 Модуль геркона
Модуль KY-025 с герконом, обеспечивающий цифровой и аналоговый выходы.