-
Como funciona o potenciômetro
-
Como fazer a interface do ESP32 com um potenciômetro
-
Como programar o ESP32 para ler o valor de um potenciômetro
Como converter o valor lido de um potenciômetro para o valor útil
Hardware usado neste tutorial
1 | × | Módulo de desenvolvimento ESP-WROOM-32 | |
1 | × | Cabo Micro USB | |
1 | × | Potenciômetro | |
1 | × | Protoboard | |
3 | × | Fios de ligação |
Introdução ao potenciômetro
O potenciômetro (também conhecido como sensor de ângulo rotativo) é usado para alterar as configurações (por exemplo, o volume do alto-falante, a temperatura da sala, 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.

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 ao pino de entrada analógica de um ESP32 e, em seguida, ler o valor analógico do pino.
O valor analógico do pino de entrada pode ser redimensionado para outro valor. Vamos ver os casos de uso:
-
Redimensione o valor analógico para o ângulo do potenciômetro.
-
Reescalone o valor analógico para a tensão do potenciômetro.
-
Redimensione o valor analógico para o valor de configuração (por exemplo, o volume do alto-falante, a temperatura da sala, o brilho da lâmpada...)
Redimensionar intervalo
A PARTIR DE | PARA | |||
---|---|---|---|---|
Ângulo | girado pelo usuário | 0° | → | ANGLE_MAX° |
Tensão | do pino do potenciômetro | 0V | → | 3,3 V |
Valor ADC | lido pelo ESP32 | 0 | → | 4095 |
Valor de configuração | convertido por ESP32 | VALUE_MIN | → | VALUE_MAX |
Diagrama de fiação entre potenciômetro e ESP32

Esta imagem é criada usando Fritzing . Clique para ampliar a imagem
Como programar o potenciômetro
-
Leia o valor de um pino de entrada, que se conectou ao pino de saída do potenciômetro usando a função analogRead() .
-
Redimensione para o ângulo do potenciômetro usando a função map() .
-
Reescala para a tensão do potenciômetro:
-
Reescalonar para o valor controlável (por exemplo, volume do estéreo, brilho, velocidade do motor DC...)
-
Por exemplo, redimensionar para o brilho do LED. Conforme mencionado neste tutorial, o brilho do LED pode ser controlado usando o valor PWM de 0 (sempre OFF ) a 255 (sempre ON ). Portanto, podemos mapear o valor analógico para o brilho do LED (de OFF para o mais brilhante) da seguinte forma:
Se você quiser escurecer o LED da luz noturna para o mais brilhante,
Código ESP32
/*
* This ESP32 code is created by esp32io.com
*
* This ESP32 code is released in the public domain
*
* For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-potentiometer
*/
float floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin GIOP36:
int analogValue = analogRead(36);
// Rescale to potentiometers voltage (from 0V to 3.3V):
float voltage = floatMap(analogValue, 0, 4095, 0, 3.3);
// print out the value you read:
Serial.print("Analog: ");
Serial.print(analogValue);
Serial.print(", Voltage: ");
Serial.println(voltage);
delay(1000);
}
Veja o resultado no Serial Monitor. Parece com o abaixo:
https://esp32io.com/tutorials/esp32-potentiometer