ESP32 - joystick - servomotor
En este tutorial, vamos a aprender cómo usar un ESP32 y un joystick para controlar dos servomotores o un kit de paneo e inclinación con servomotores.
Un joystick tiene dos potenciómetros integrados que son perpendiculares entre sí (llamados eje X y eje Y). Estos potenciómetros producen valores analógicos (llamados valor X y valor Y) en los pines VRX y VRY. Usaremos estos valores analógicos para controlar dos servomotores de forma independiente: el valor X controla el servomotor n.º 1 y el valor Y controla el servomotor n.º 2. En el caso del kit de paneo e inclinación, el movimiento de dos servomotores genera movimiento en 3D.
Hay dos casos de uso de la aplicación:
- Caso de uso 1: Los servomotores giran de acuerdo con el movimiento del pulsador del joystick:
- Los ángulos de los servomotores son proporcionales a los valores de X e Y del joystick.
- Cuando soltamos el pulsador del joystick ⇒ todos los valores vuelven a los valores centrales ⇒ los servomotores regresan automáticamente a la posición central
- Caso de uso 2: Usa el joystick para comandar servomotores (comandos arriba/abajo/izquierda/derecha)
- Cuando se empuja el pulsador del joystick hacia la izquierda, mueve el servomotor n.º 1 en sentido horario paso a paso
- Cuando se empuja el pulsador del joystick hacia la derecha, mueve el servomotor n.º 1 en sentido antihorario paso a paso
- Cuando se empuja el pulsador del joystick hacia arriba, mueve el servomotor n.º 2 en sentido horario paso a paso
- Cuando se empuja el pulsador del joystick hacia abajo, mueve el servomotor n.º 2 en sentido antihorario paso a paso
- Cuando soltamos el pulsador del joystick, los servomotores no volverán a la posición central
- Si se pulsa el joystick (pulsador), los servomotores volverán a la posición central
- Cómo conectar el ESP32 con un joystick y un motor servo usando breadboard
- Cómo conectar el ESP32 con un joystick y un servomotor usando placa breakout con bloque terminal de tornillo
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en el IDE de Arduino.
- Conecta el joystick y el servomotor a la placa ESP32 tal como se indica en el diagrama de cableado.
- Conecta la placa ESP32 a tu PC mediante un cable micro USB.
- Abre Arduino IDE en tu PC.
- Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
- Haz clic en el icono Bibliotecas en la barra izquierda del Arduino IDE.
- Escribe ESP32Servo en el cuadro de búsqueda, luego busca la biblioteca de servomotores de Kevin Harrington, John K. Bennett.
- Haz clic en el botón Instalar para instalar la biblioteca de servomotores para ESP32.
- Copia el código anterior y ábrelo con Arduino IDE
- Haz clic en el botón Subir en Arduino IDE para subir el código al ESP32
- Abrir el Monitor Serial
- Empuja el joystick en alguna dirección
- Ver la rotación del servomotor
- Ver el resultado en el Monitor Serial
- Haz clic en el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
- Busca “ezButton”, luego localiza la biblioteca de botones de ArduinoGetStarted.com.
- Haz clic en el botón Instalar para instalar la biblioteca ezButton.
- Copia el código anterior y ábrelo con el IDE de Arduino.
- Haz clic en Subir en el IDE de Arduino para subir el código al ESP32.
- Abre el Monitor Serial.
- Empuja el joystick en alguna dirección.
- Observa la rotación del servomotor.
- Observa el resultado en el Monitor Serial.
- El ADC del ESP32 no es perfectamente preciso y podría necesitar calibración para obtener resultados correctos. Cada placa ESP32 puede ser un poco distinta, por lo que debe calibrar el ADC para cada placa individual.
- La calibración puede ser difícil, especialmente para principiantes, y puede que no siempre proporcione los resultados exactos que desea.
Examinaremos el código para ambos casos de uso en las próximas partes.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de Joystick y Servomotor
Si no sabes acerca del joystick y del servomotor (pinout, cómo funciona, cómo programarlo ...), aprende sobre ellos en los siguientes tutoriales:
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Código ESP32
Código ESP32 - Los servomotores giran de acuerdo con el movimiento del pulgar del joystick
Pasos R\u00e1pidos


Es posible que hayas notado que el servomotor no se mueve de forma proporcional al movimiento del joystick. Este problema no se debe al joystick ni al servomotor en sí, sino al ADC del ESP32. El final de este tutorial explicará por qué ocurre esto.
Código ESP32 - Usa el joystick para controlar servomotores
Pasos R\u00e1pidos

Explicación del código
¡Lee la explicación línea por línea en las líneas de comentario del código fuente!
※ Nota:
Este tutorial utiliza la función analogRead() para leer valores de un ADC (Convertidor analógico-digital) conectado a un joystick. El ADC del ESP32 es adecuado para proyectos que no requieren alta precisión. Sin embargo, para proyectos que requieren mediciones precisas, tenga en cuenta:
Para proyectos que requieren alta precisión, considere usar un ADC externo (p. ej. ADS1115) con el ESP32 o usar un Arduino, que tiene un ADC más fiable. Si aún desea calibrar el ADC del ESP32, consulte ESP32 ADC Calibration Driver
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.