Arduino Nano ESP32 - Joystick - Servomotor
En este tutorial, vamos a aprender cómo usar Arduino Nano 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 están dispuestos perpendicularmente entre sí (llamados eje X y eje Y). Estos potenciómetros entregan los 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 #1 y el valor Y controla el servomotor #2. En el caso del kit pan-tilt, el movimiento de los dos servomotores genera movimiento en tres dimensiones.
Hay dos casos de uso de la aplicación:
- Caso de uso 1: Los servomotores giran según el movimiento del pulsador del joystick:
- Los ángulos de los servomotores están en proporción a los valores del eje X e Y del joystick.
- Cuando soltamos el pulsador del joystick, todos los valores vuelven a los valores centrales; los servomotores vuelven automáticamente a la posición central
- Caso de uso 2: usar 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 (botón), los servomotores volverán a la posición central
- Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
- Conecte los componentes de acuerdo con el diagrama proporcionado.
- Conecte la placa Arduino Nano ESP32 a su computadora mediante un cable USB.
- Inicie el IDE de Arduino en su computadora.
- Seleccione la placa Arduino Nano ESP32 y su puerto COM correspondiente.
- Haga clic en el icono Bibliotecas en la barra izquierda del IDE de Arduino.
- Escriba ESP32Servo en el cuadro de búsqueda, luego busque la biblioteca de servomotores de Kevin Harrington y John K. Bennett.
- Haga clic en el botón Instalar para instalar la biblioteca de servomotores para Arduino Nano ESP32.
- Copie el código anterior y ábralo con Arduino IDE
- Haga clic en Subir botón en Arduino IDE para subir el código al Arduino Nano 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
- Abre el Administrador de Bibliotecas haciendo clic en el icono de Administrador de Bibliotecas en la barra de navegación izquierda del IDE de Arduino
- Busca “ezButton”, luego encuentra 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 el botón Subir en el IDE de Arduino para subir el código al Arduino Nano 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 Arduino Nano ESP32 no es perfectamente preciso y podría requerir calibración para obtener resultados correctos. Cada placa Arduino Nano ESP32 puede variar ligeramente, por lo que la calibración es necesaria para cada placa individual.
- La calibración puede ser desafiante, especialmente para principiantes, y puede que no siempre produzca exactamente los resultados que deseas.
Exploraremos el código para ambos casos de uso en las próximas partes.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del joystick y del servomotor
Si no sabes sobre el joystick y el servomotor (diagrama de pines, cómo funciona, cómo programar ...), aprende sobre ellos en los siguientes tutoriales:
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Código de Arduino Nano ESP32
Código de Arduino Nano ESP32 - Los servomotores giran de acuerdo con el movimiento del pulgar del joystick
Pasos R\u00e1pidos
Para empezar con Arduino Nano ESP32, siga estos pasos:


Es posible que hayas notado que el motor servo no se mueve de forma proporcional al movimiento del joystick. Este problema no se debe al joystick ni al propio motor servo, sino al convertidor analógico-digital (ADC) del Arduino Nano ESP32. Al final de este tutorial se explicará por qué ocurre esto.
Código de Arduino Nano 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 los comentarios 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 sensor o componente. El ADC del Arduino Nano ESP32 es adecuado para proyectos que no requieren alta precisión. Sin embargo, para proyectos que necesiten mediciones precisas, ten en cuenta lo siguiente:
Para proyectos que requieren alta precisión, considera usar un ADC externo (p. ej. ADS1115) con el Arduino Nano ESP32 o usar otro Arduino, como el Arduino Uno R4 WiFi, que tiene un ADC más confiable. Si aún deseas calibrar el ADC del Arduino Nano ESP32, consulta el 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.