Sensor KY-023 HW-504 Joystick doble eje XY
$15,00
Joystick KY-023/HW-504 de 2 ejes (X/Y) + botón. Salida analógica + digital. Ideal para Arduino/ESP32. Perfecto para control de robots, drones, juegos o interfaces DIY.
3 disponibles
Descripción
ℹ️ Información general
El módulo KY-023 / HW-504 es un joystick analógico compacto y robusto, ideal para proyectos que requieren entrada de dirección o movimiento en 2 dimensiones. Incluye:
El módulo KY-023 / HW-504 es un joystick analógico compacto y robusto, ideal para proyectos que requieren entrada de dirección o movimiento en 2 dimensiones. Incluye:
- 🕹️ Palanca de goma con resorte central (vuelve automáticamente al centro)
- 📏 2 potenciómetros lineales para los ejes X e Y
- 🔘 Botón táctil integrado (activado al presionar la palanca)
Perfecto para controlar robots móviles, drones, brazos robóticos, juegos retro, interfaces de usuario o cualquier sistema donde necesites una entrada analógica intuitiva y económica.
⚙️ Especificaciones técnicas
- 📊 Tipo: Joystick analógico con botón
- 📈 Salidas:
- X: señal analógica (0–VCC)
- Y: señal analógica (0–VCC)
- SW: salida digital (HIGH cuando no presionado, LOW al presionar)
- ⚡ Voltaje de operación: 3.3V – 5V
- 📏 Rango de salida:
- X/Y: ~0 V (izquierda/abajo) → VCC (derecha/arriba)
- Centro: ~VCC/2 (ideal para calibración)
- 🔌 Pines: VCC, GND, VRx, VRy, SW
- 📦 Dimensiones: ~25mm x 25mm
- 🧱 Material: Plástico resistente, palanca de goma antideslizante
- 🔋 Consumo: < 10 mA
🔌 Información de conexionado (detallada y práctica)
🔹 Conexión típica con Arduino Uno/Nano:
|
Pin del joystick
|
Pin de Arduino
|
|---|---|
|
VCC
|
5V
|
|
GND
|
GND
|
|
VRx
|
A0
|
|
VRy
|
A1
|
|
SW
|
D2
|
✅ Librería recomendada: Ninguna necesaria — usa
analogRead() y digitalRead() directamente.📌 Ejemplo básico de código:
const int xAxis = A0;
const int yAxis = A1;
const int buttonPin = 2;
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Botón activo en LOW
Serial.begin(9600);
}
void loop() {
int x = analogRead(xAxis);
int y = analogRead(yAxis);
int btn = digitalRead(buttonPin);
Serial.print(«X: «); Serial.print(x);
Serial.print(» | Y: «); Serial.print(y);
Serial.print(» | Botón: «);
Serial.println(btn == LOW ? «PRESIONADO» : «SUELTO»);
delay(200);
}
⚠️ Recomendaciones clave:
- Calibra el centro del joystick en tu código: lee valores en reposo y resta el offset (ej.
x_center = 512en 10-bit). - El botón es normalmente HIGH (pull-up interno activado) → se pone LOW al presionar.
- Para mayor precisión, usa
map()para convertir valores a grados o porcentajes:
int x_mapped = map(x, 0, 1023, -100, 100); // -100% a +100%
- Evita fuerzas laterales excesivas en la palanca — puede dañar los potenciómetros.
- Si usas con ESP32, puedes conectar directamente (3.3V compatible).
💡 Usos sugerados:
- Control remoto para robots o vehículos RC
- Interface para brazo robótico (movimiento X-Y-Z con 2 joysticks)
- Juegos retro con Arduino + TFT OLED
- Sistema de navegación para drones (modo manual)
- Proyectos educativos de entrada analógica y digital















Valoraciones
No hay valoraciones aún.