Los joysticks analógicos son una forma bárbara de sumar control a tus proyectos. En este tutorial vamos a aprender cómo usar el módulo de joystick analógico con tu placa ESP32.
Descripción general
El módulo tiene 5 pines: VCC, Ground, X, Y y Key. Tené en cuenta que las etiquetas en el tuyo pueden ser un poco distintas según el fabricante. El stick es analógico y te va a dar lecturas mucho más precisas que los joysticks direccionales simples que usan botones o interruptores mecánicos. Además, podés presionar el joystick hacia abajo para activar un pulsador de selección.
Componentes requeridos
(1) x Elegoo ESP32
(1) x Módulo Joystick
(2) x Protoboard de 400 puntos
(5) x Cables DuPont Hembra-Macho
Introducción al componente
Tenemos que usar pines analógicos de la placa para leer los datos de los ejes X e Y, y un pin digital para el botón. El pin Key se conecta a tierra cuando presionás el joystick y queda "flotando" cuando no lo hacés. Para obtener lecturas estables, usamos las resistencias pull-up integradas en los pines digitales, configurándolos como entradas.
Esquema de conexión y cableado
Necesitamos 5 conexiones para el joystick: Key, Y, X, Voltaje y Tierra. Los ejes Y y X son señales analógicas, mientras que Key es digital. Si no necesitás usar el interruptor, podés conectar solamente 4 pines.
Código
Podés hacer clic en el enlace para descargar el programa a tu equipo. Antes de abrirlo, asegurate de tener instalado el Arduino IDE y los controladores correspondientes para la placa ESP32. Si tenés dudas sobre este proceso, fijate en el capítulo "Parte 1" de la documentación.
📥 DESCARGAR analog_joystick.ino
Con este código, el ESP32 leerá el estado del switch y la posición de los ejes, mostrando los resultados en el monitor serie. No te olvides de configurar la velocidad a 9600 baudios para ver los datos correctamente.
Configuración de pines y funciones
En el código, definimos los pines 34 y 35 para las entradas analógicas de los ejes y el pin 18 para el switch digital. Usar constantes ayuda a que el programa ocupe menos memoria y sea más claro.
La función setup() inicializa el sistema, configura el pin del switch como entrada y activa la resistencia pull-up interna. También inicia la comunicación serie. Por otro lado, la función loop() se encarga de leer continuamente los valores: digitalRead() nos dice si el botón está presionado (0) o suelto (1), mientras que analogRead() nos da la posición de los potenciómetros (un valor entre 0 y 4095 para el ESP32).
Entrada digital con pull-up
Al configurar el pin con la resistencia pull-up interna, simplificamos el cableado porque no necesitás agregar resistencias externas. Cuando el switch no está presionado, el pin lee un estado ALTO (1), y cuando lo apretás, cambia a un estado BAJO (0).
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.