Tutorial ESP32 26/55 - Usando Joystick con Arduino Tomando Acción | Kit IoT ESP32 de SunFounder

Tutorial ESP32 26/55 - Usando Joystick con Arduino Tomando Acción | Kit IoT ESP32 de SunFounder

En este tutorial, aprenderemos cómo interfazar un joystick XY con el microcontrolador ESP32 de SunFounder, lo que nos permitirá detectar su posición y tomar medidas en función de su entrada. También integraremos un zumbador que se activa cuando el joystick se mueve a una posición específica. Esta combinación nos permitirá crear proyectos interactivos que respondan a la entrada del usuario en tiempo real.

ESP32-26-xy-joystick-principal

El joystick XY proporciona dos salidas analógicas correspondientes a las posiciones X e Y y un interruptor que se puede presionar para activar una acción. Al leer los valores del joystick, podemos controlar varios elementos en nuestro proyecto, como activar un zumbador o mostrar valores en la pantalla. Para comprender completamente el proceso, asegúrate de ver el video para obtener información adicional (en el video a las 00:00).

Hardware Explicado

Los componentes principales de este proyecto incluyen el microcontrolador ESP32, el joystick XY y un zumbador. El ESP32 es una placa versátil que admite Wi-Fi y Bluetooth, lo que la hace ideal para proyectos de IoT. El joystick XY consta de dos resistencias variables para los ejes X e Y, y un interruptor de botón para entrada adicional.

esquema_del_joystick
ESP32-26-xy-esquema-de-joystick

El joystick emite señales analógicas correspondientes a su posición, las cuales son leídas por los pines analógicos del ESP32. El botón pulsador proporciona una señal digital cuando se presiona. El zumbador está conectado a un pin de salida digital en el ESP32, lo que permite activarlo o desactivarlo según la posición del joystick.

Detalles de la hoja de datos

Fabricante SunFounder
Número de parte Módulo de Joystick XY
Voltaje de operación 3.3 V - 5 V
Valor del resistor 10 kΩ (cada eje)
Corriente máxima 20 mA
Tipo de Interruptor Botón pulsador momentáneo
Dimensiones Aproximadamente 50 mm x 50 mm

  • Asegúrate de que el joystick esté alimentado con 3.3 V para la compatibilidad con el ESP32.
  • Utiliza resistencias de pull-up para el interruptor para evitar entradas flotantes.
  • Conecta las salidas analógicas a los pines ADC del ESP32 (34 para X, 35 para Y).
  • Utiliza un mecanismo de debounce para el interruptor para evitar activaciones falsas.
  • Supervise los niveles de voltaje para asegurarse de que permanezcan dentro de los límites de operación seguros.

Instrucciones de cableado

ESP32-26-xy-joystick-wiring

Para conectar el joystick al ESP32, comienza conectando el pin de tierra del joystick a un pin de tierra en el ESP32. A continuación, conecta el pin VCC del joystick al pin de 3.3 V en el ESP32. El joystick tiene dos pines de salida analógica: conecta la salida del eje X (etiquetada comoVRX) para fijar34en el ESP32 y la salida del eje Y (etiquetada comoVRY) para fijar35.

Para la salida del interruptor, conecta el pin del interruptor al pin33en el ESP32. Este pin leerá la pulsación del botón como una entrada digital. Asegúrate de que las conexiones estén seguras para evitar problemas intermitentes. Si tu cableado difiere del video (en el video a las 02:30), adáptalo en consecuencia mientras sigues los mismos principios para las conexiones analógicas y digitales.

Ejemplos de código y guía paso a paso

En el código, comenzamos definiendo constantes para los pines del joystick. Los identificadoresxAxis,yAxis, ybtnestán configurados para34,35, y33, respectivamente. Esto hace que sea fácil hacer referencia a estos pines a lo largo del programa.

#define xAxis 34
#define yAxis 35
#define btn 33

En elsetup()en la función, inicializamos la comunicación serial y configuramos el modo del pin del botón como entrada. Esto prepara el ESP32 para leer datos del joystick y enviarlos al monitor serial.

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

Dentro delloop()leemos los valores analógicos para los ejes X e Y del joystick usandoanalogRead()y almacenarlos enxValueyyValueEl estado del botón se lee utilizandodigitalRead()y almacenado enbtnValueFinalmente, imprimimos estos valores en el monitor serial.

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // Delay between reads
}

Este bucle actualiza continuamente los valores, proporcionando retroalimentación en tiempo real sobre el movimiento del joystick y las pulsaciones de los botones. Para el código completo, consulte el código completo cargado debajo del artículo.

Demostración / Qué Esperar

Cuando la configuración esté completa y el código esté cargado, el monitor serial deberá mostrar los valores de X y Y junto con el estado del botón. A medida que mueves el joystick, los valores cambiarán en consecuencia, reflejando su posición. Presionar el botón alternará su estado entre alto y bajo.

Los errores comunes incluyen cableado incorrecto, lo que puede llevar a entradas flotantes o a la falta de respuesta del joystick. Asegúrate de que se utilizan los pines correctos y de que se implementan las resistencias pull-up para el interruptor. Mira el video para demostraciones prácticas de estos comportamientos (en el video a las 13:00).

Marcas de tiempo en video

  • 00:00 Inicio
  • 1:47 Introducción al Joystick XY
  • 7:32 Midiendo los valores del Joystick
  • 8:40 Explicación del cableado
  • 11:06 Código Arduino para Joystick con ESP32 explicado
  • 14:43 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
  • 16:24 Demostración del uso simple del Joystick
  • 19:20 Detectando la posición del código del joystick con zumbador
  • 21:16 Demostración de detección de posición

Imágenes

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

No hay archivos disponibles.