ESP32 - Potenciómetro
Este tutorial te enseña cómo usar el ESP32 con el potenciómetro. En detalle, aprenderemos:
- Cómo funciona el potenciómetro
- Cómo conectar el ESP32 a un potenciómetro
- Cómo programar el ESP32 para leer el valor de un potenciómetro
- Cómo convertir el valor leído de un potenciómetro al valor útil
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 del potenciómetro
El potenciómetro (también conocido como sensor de ángulo rotatorio) se utiliza para cambiar los ajustes (p. ej. el volumen del altavoz, la temperatura de la habitación, el brillo de la lámpara...).

Pinout del potenciómetro
Un potenciómetro suele tener 3 pines:
- Pin VCC: conecta este pin a VCC (5V o 3.3V)
- Pin GND: conecta este pin a GND (0V)
- Pin de salida: entrega la tensión al pin de entrada del ESP32.

※ Nota:
El pin GND y el pin VCC son intercambiables.
Cómo funciona un potenciómetro
El eje del potenciómetro puede girarse desde 0° (el más cercano al pin GND) hasta un ángulo (el más cercano al pin VCC), llamado ANGLE_MAX.
El voltaje en el pin de salida es directamente proporcional a la posición angular del eje, variando desde 0 hasta VCC. La tabla a continuación muestra la relación entre el ángulo y el voltaje en el pin de salida:
| Angle | Voltage |
|---|---|
| 0° | 0v |
| ANGLE_MAX° | VCC |
| angle° | angle° × VCC / ANGLE_MAX° |
※ Nota:
El valor de ANGLE_MAX depende de los fabricantes.

ESP32 - Potenciómetro giratorio
El pin de entrada analógica del ESP32 convierte la tensión (entre 0 V y 3.3 V) en valores enteros (entre 0 y 4095), llamados valores ADC o valores analógicos.
Podemos conectar el pin de salida del potenciómetro al pin de entrada analógica del ESP32 y luego leer el valor analógico desde ese pin.
El valor analógico del pin de entrada puede reescalarse a otro valor. Veamos los casos de uso:
- Reescale el valor analógico al ángulo del potenciómetro.
- Reescale el valor analógico al voltaje del potenciómetro.
- Reescale el valor analógico al valor de ajuste (p. ej. el volumen del altavoz, la temperatura de la habitación, el brillo de la lámpara...)
Rango de reescalado
| FROM | TO | |||
|---|---|---|---|---|
| Angle | rotated by user | 0° | → | ANGLE_MAX° |
| Voltage | from potentiometer's pin | 0V | → | 3.3V |
| ADC value | read by ESP32 | 0 | → | 4095 |
| Setting value | converted by ESP32 | VALUE_MIN | → | VALUE_MAX |
Diagrama de cableado entre el potenciómetro y el ESP32
- Cómo conectar un ESP32 y un potenciómetro usando placa de pruebas

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ómo conectar ESP32 y potenciómetro usando placa breakout con bloque de terminales de tornillo

Cómo programar un potenciómetro
- Lee el valor de un pin de entrada, que está conectado al pin de salida del potenciómetro mediante la función analogRead().
- Reescala al ángulo del potenciómetro utilizando la función map().
- Reescalar al voltaje del potenciómetro:
- Reescalar al valor controlable (p. ej. volumen de un estéreo, brillo, velocidad de un motor de corriente continua...)
- Por ejemplo, ajustar el brillo del LED. Como se menciona en este tutorial, el brillo del LED se puede controlar utilizando un valor PWM desde 0 (apagado) hasta 255 (encendido). Por lo tanto, podemos mapear el valor analógico al brillo del LED (desde apagado hasta el brillo máximo) de la siguiente manera:
Si quieres atenuar el LED desde la luz nocturna hasta la más brillante,
※ Nota:
La función map() solo puede usarse para reescalar el valor analógico al tipo int o long. Si el valor controlable es de tipo float, necesitas usar la función floatMap() en lugar de la función map().
Función floatMap():
Código ESP32
Pasos R\u00e1pidos
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Copia el código anterior y pégalo en el IDE de Arduino.
- Compila y sube el código al tablero ESP32 haciendo clic en el botón Subir en el IDE de Arduino

- Abrir el Monitor Serial en el IDE de Arduino.

- Gira el potenciómetro.
- Consulta el resultado en el Monitor Serial. Se ve como se muestra a continuación:
※ Nota:
Este tutorial utiliza la función analogRead() para leer valores de un ADC (convertidor analógico-digital) conectado a un potenciómetro. El ADC del ESP32 es adecuado para proyectos que NO requieren alta precisión. Sin embargo, para proyectos que necesitan mediciones precisas, tenga en cuenta lo siguiente:
- 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 diferente, por lo que es necesario calibrar el ADC para cada placa individual.
- La calibración puede ser difícil, especialmente para principiantes, y podría no dar siempre los resultados exactos que deseas.
Para proyectos que requieren alta precisión, considera 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.