Los joysticks analógicos son una excelente manera de sumar control a tus proyectos. En este tutorial vamos a aprender cómo usar el módulo de joystick analógico.
Resumen
El módulo tiene 5 pines: VCC, Ground, X, Y, Key. Tené en cuenta que las etiquetas en el tuyo pueden ser un poco distintas, dependiendo de dónde hayas sacado el módulo. La palanca (thumb stick) es analógica y debería dar lecturas más precisas que los joysticks "direccionales" simples que usan botones o interruptores mecánicos. Además, podés presionar el joystick hacia abajo (en el mío es medio duro) para activar un pulsador de "presionar para seleccionar".
Tenemos que usar pines analógicos de Arduino para leer los datos de los pines X/Y, y un pin digital para leer el botón. El pin Key se conecta a tierra cuando el joystick se presiona, y queda flotante de otra manera. Para tener lecturas estables del pin Key/Select, hay que conectarlo a VCC a través de una resistencia pull-up. Se pueden usar las resistencias integradas en los pines digitales de Arduino. Fijate en el tutorial sobre cómo activar las resistencias pull-up para pines de Arduino configurados como entradas; por ejemplo: pinMode(SW_pin, INPUT);
Componentes Requeridos
(1) x Elegoo UNO R3
(1) x Módulo de joystick
(5) x Cables H-M (Cables DuPont Hembra a Macho)
Código
Podés hacer clic en el enlace de texto azul para descargar el archivo del programa a tu dispositivo, y hacer doble clic para abrirlo una vez que termine la descarga. Nota: Antes de abrir el archivo, asegurate de tener instalado el entorno de desarrollo Arduino IDE y de haber completado la instalación de los componentes pertinentes, como el paquete de soporte de la placa y el driver correspondiente a la placa de desarrollo UNO. Si tenés alguna duda sobre este proceso, podés consultar el capítulo "parte 1" del documento para una guía detallada.
📥 DESCARGAR analog_joystick.ino
Con este código, la placa UNO va a leer los datos de un módulo de joystick (incluyendo el estado del interruptor y las posiciones de los ejes X/Y) y va a mostrar los resultados en el monitor serie del software Arduino una vez que el código esté compilado y subido. Hacé clic en el botón Monitor Serie para encenderlo. Lo básico sobre el monitor serie se explica en detalle en el tutorial 4 de la parte 2.
Análisis del Código
En la configuración de pines, const int SW_pin = 2 define el pin digital D2 conectado a la salida del interruptor; const int X_pin = 0 define el pin analógico A0 para el eje X; y const int Y_pin = 1 el pin analógico A1 para el eje Y. Usar const int asegura que estos valores sean fijos y consuman el mínimo de memoria.
La función setup() inicializa el sistema: configura el pin del interruptor como entrada, habilita la resistencia pull-up interna mediante digitalWrite(SW_pin, HIGH) e inicia la comunicación serie a 9600 baudios para hablar con la computadora.
La función loop() es el bucle principal que lee y muestra los datos continuamente. digitalRead(SW_pin) obtiene el estado del interruptor (0 para presionado, 1 para suelto), mientras que analogRead lee los valores de los potenciómetros (0-4095 para UNO). Los valores se imprimen en el monitor serie con una pausa de 1000 milisegundos (1 segundo) entre lecturas.
Entrada Digital con Resistencia Pull-up
El pin del interruptor se configura en modo INPUT con la resistencia pull-up interna habilitada. Esto significa que cuando el interruptor no está presionado, el pin lee HIGH (1), y cuando se presiona, lee LOW (0). Esta configuración simplifica el cableado al eliminar la necesidad de usar resistencias pull-up externas.
DigitalWrite vs AnalogWrite
Estas son dos funciones de E/S fundamentales en Arduino. La función digitalWrite() se usa para poner un pin digital en HIGH (5V en UNO) o LOW (0V). Su sintaxis es digitalWrite(pin, valor) y se usa comúnmente para controlar LEDs, relés u otros dispositivos digitales. En este código, se utiliza específicamente para habilitar la resistencia pull-up interna del interruptor.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.