Skip to product information
1 of 10

KY-023 Dual Axis XY Joystick Module — Analog X/Y + Push Button, 3.3V/5V, Arduino Compatible

KY-023 Dual Axis XY Joystick Module — Analog X/Y + Push Button, 3.3V/5V, Arduino Compatible

Regular price $2.49
Regular price Sale price $2.49
Sale Sold out
Shipping calculated at checkout.
Quantity

Add intuitive directional control to your project with the KY-023 Dual Axis XY Joystick Module. This thumb-stick controller provides analog X and Y axis output (0–5V) for smooth, proportional movement control, plus an integrated push-button switch for mode selection or action triggers. The self-centering spring mechanism returns the stick to center when released — just like a game controller.

Connect three wires to your Arduino's analog and digital inputs, upload a few lines of code, and you have full 2D directional control with a button. No libraries required, no complex setup — it works right out of the box.

⚡ Key Features

  • Dual-axis analog output: Two 10KΩ potentiometers provide smooth, proportional X and Y axis readings (0V–5V range, ~2.5V at center).
  • Integrated push-button switch: Press the joystick down for a digital input — perfect for mode switching, menu selection, or action triggers. Pulls to ground when pressed.
  • Self-centering: Spring-loaded mechanism returns the stick to center position when released.
  • 3.3V and 5V compatible: Works with both 3.3V and 5V microcontrollers (5V recommended for full analog range).
  • Simple 5-pin interface: Clearly labeled VCC, GND, VRx, VRy, and SW pins — connect directly to your microcontroller with jumper wires.
  • No libraries needed: Uses standard analogRead() and digitalRead() functions — works immediately with basic Arduino code.
  • Compact: Just 34mm × 26mm × 32mm — fits easily on breadboards and inside project enclosures.

🔧 How It Works

The module contains two 10KΩ potentiometers mounted at 90° to each other, connected to a thumb-stick via a gimbal mechanism. Each potentiometer acts as a voltage divider:

  • Center position: Both VRx and VRy output ~2.5V (analog reading ~512 on Arduino's 10-bit ADC).
  • Full left / full down: Output drops toward 0V (analog reading ~0).
  • Full right / full up: Output rises toward 5V (analog reading ~1023).
  • Button press: Pressing the stick down closes the SW switch, pulling the pin to GND (reads LOW with pull-up enabled).

Orientation tip: For correct X-Y orientation (X horizontal, Y vertical), mount the module with the pins facing to the left.

📌 Pinout

Pin Label Connect To Function
1 VCC Arduino 5V (or 3.3V) Power supply
2 GND Arduino GND Ground
3 VRx Analog pin (e.g., A0) X-axis analog output (0–5V)
4 VRy Analog pin (e.g., A1) Y-axis analog output (0–5V)
5 SW Digital pin (e.g., D2) Push-button switch (active LOW, needs pull-up)

🎯 Perfect For

  • Robotics control — drive motors proportionally for smooth robot movement, control robotic arms and grippers
  • RC vehicles & drones — build custom transmitters with proportional throttle and steering
  • Game controllers — create custom game pads for PC, retro gaming, or arcade cabinets
  • Camera pan/tilt — control servo-driven camera gimbals and pan-tilt mechanisms
  • Menu navigation — scroll through menus on OLED/LCD displays with intuitive stick control
  • IoT & home automation — manual override control for smart home devices
  • STEM education — teach analog input, voltage dividers, and human-machine interfaces
  • Any project that needs intuitive 2D directional input with a button

📐 Specifications

  • Model: KY-023
  • Axes: X and Y (analog output)
  • Switch: Push-button (digital, active LOW)
  • Operating voltage: 3.3V – 5V DC
  • Potentiometer type: 10KΩ ±20%, linear taper
  • Analog output range: 0V to VCC (proportional to stick position)
  • Center output: ~VCC/2 (approximately 2.5V at 5V supply)
  • Switch activation: Pulls to ground when pressed (requires pull-up resistor)
  • Interface: 5-pin header (VCC, GND, VRx, VRy, SW)
  • Dimensions: 34mm × 26mm × 32mm (1.3" × 1.0" × 1.3")

🔌 Compatible With

  • Arduino Uno, Mega, Nano, Leonardo, and all compatible boards
  • ESP32, ESP8266 (use 3.3V supply; note: ESP32 ADC is 12-bit, 0–4095 range)
  • Raspberry Pi (requires external ADC — Pi has no built-in analog inputs)
  • STM32, AVR, PIC, and other microcontrollers with analog inputs
  • Any 3.3V or 5V system with at least 2 analog input pins and 1 digital input pin

📦 Package Contents

  • 1 × KY-023 Dual Axis XY Joystick Module

Jumper wires, Arduino board, and breadboard are not included.


📄 Documentation & Resources

View full details