ESP32 - Potenciômetro
Este tutorial ensina você a usar o ESP32 com o potenciômetro. Em detalhes, vamos aprender:
- Como o potenciômetro funciona
- Como conectar o ESP32 a um potenciômetro
- Como programar o ESP32 para ler o valor de um potenciômetro
- Como converter o valor lido de um potenciômetro em um valor útil
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Potenciômetro
O potenciômetro (também conhecido como sensor de ângulo rotativo) é usado para alterar configurações (por exemplo, o volume do alto-falante, a temperatura do ambiente, o brilho da lâmpada...)

Pinagem do Potenciômetro
Um potenciômetro geralmente tem 3 pinos:
- Pino VCC: conecte este pino ao VCC (5V ou 3.3v)
- Pino GND: conecte este pino ao GND (0V)
- Pino de saída: envia a tensão para o pino de entrada do ESP32.

※ Nota:
O pino GND e o pino VCC são intercambiáveis
Como o Potenciômetro Funciona
O eixo do potenciômetro pode ser girado de 0° (mais próximo do pino GND) até um ângulo (mais próximo do pino VCC), chamado ANGLE_MAX.
A tensão no pino de saída é diretamente proporcional à posição angular do eixo, variando de 0 a VCC. A tabela abaixo mostra a relação entre o ângulo e a tensão no pino de saída:
| Ângulo | Tensão |
|---|---|
| 0° | 0v |
| ANGLE_MAX° | VCC |
| ângulo° | ângulo° × VCC / ANGLE_MAX° |
※ Nota:
O valor de ANGLE_MAX depende do fabricante.

ESP32 - Potenciômetro Rotativo
O pino de entrada analógica do ESP32 converte a tensão (entre 0v e 3.3V) em valores inteiros (entre 0 e 4095), chamados de valor ADC ou valor analógico.
Podemos conectar o pino de saída do potenciômetro a um pino de entrada analógica do ESP32 e então ler o valor analógico desse pino.
O valor analógico do pino de entrada pode ser reescalado para outro valor. Vamos ver os casos de uso:
- Reescalar o valor analógico para o ângulo do potenciômetro.
- Reescalar o valor analógico para a tensão do potenciômetro.
- Reescalar o valor analógico para o valor de configuração (por exemplo, o volume do alto-falante, a temperatura do ambiente, o brilho da lâmpada...)
Faixa de Reescala
| DE | PARA | |||
|---|---|---|---|---|
| Ângulo | girado pelo usuário | 0° | → | ANGLE_MAX° |
| Tensão | do pino do potenciômetro | 0V | → | 3.3V |
| Valor ADC | lido pelo ESP32 | 0 | → | 4095 |
| Valor de configuração | convertido pelo ESP32 | VALUE_MIN | → | VALUE_MAX |
Diagrama de Ligação entre o Potenciômetro e o ESP32
- Como conectar o ESP32 e o potenciômetro usando uma protoboard

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
- Como conectar o ESP32 e o potenciômetro usando uma placa breakout com bornes de parafuso

Como Programar o Potenciômetro
- Leia o valor de um pino de entrada, que está conectado ao pino de saída do potenciômetro, usando a função analogRead().
- Reescale para o ângulo do potenciômetro usando a função map().
- Reescale para a tensão do potenciômetro:
- Reescale para o valor controlável (por exemplo, volume do som, brilho, velocidade do motor DC... )
- Por exemplo, reescalar para o brilho do LED. Como mencionado neste tutorial, o brilho do LED pode ser controlado usando um valor PWM de 0 (sempre DESLIGADO) a 255 (sempre LIGADO). Portanto, podemos mapear o valor analógico para o brilho do LED (de DESLIGADO até o mais brilhante) da seguinte forma:
Se você quiser variar o LED da luz noturna até o mais brilhante,
※ Nota:
A função map() só pode ser usada para reescalar o valor analógico para um valor do tipo int ou long. Se o valor controlável for do tipo float, você precisa usar a função floatMap() em vez da função map().
Função floatMap():
Código ESP32
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
- Copie o código acima e cole-o na Arduino IDE.
- Compile e carregue o código na placa ESP32 clicando no botão Upload na Arduino IDE

- Abra o Serial Monitor na Arduino IDE

- Gire o potenciômetro
- Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
※ Nota:
Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um potenciômetro. O ADC do ESP32 é bom para projetos que NÃO precisam de alta precisão. No entanto, para projetos que precisam de medições precisas, observe:
- O ADC do ESP32 não é perfeitamente preciso e pode precisar de calibração para obter resultados corretos. Cada placa ESP32 pode ser um pouco diferente, então você precisa calibrar o ADC para cada placa individualmente.
- A calibração pode ser difícil, especialmente para iniciantes, e nem sempre pode fornecer os resultados exatos que você deseja.
Para projetos que precisam de alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o ESP32 ou usar um Arduino, que tem um ADC mais confiável. Se ainda quiser calibrar o ADC do ESP32, consulte o ESP32 ADC Calibration Driver