Arduino - Potenciômetro
Neste tutorial, vamos aprender:
- Como o potenciômetro funciona.
- Como conectar o potenciômetro ao Arduino.
- Como programar o Arduino para ler o valor do potenciômetro e convertê-lo em outros valores controláveis.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Potenciômetro
O potenciômetro rotativo (também chamado de sensor de ângulo rotativo) é usado para ajustar manualmente o valor de algo (por exemplo, o volume do som, o brilho de uma lâmpada, o nível de zoom de um osciloscópio...)

Pinagem
O potenciômetro geralmente tem 3 pinos:
- Pino GND: precisa ser conectado ao GND (0V)
- Pino VCC: precisa ser conectado ao VCC (5V ou 3.3V)
- Pino de saída: envia a tensão para o pino de entrada do Arduino.

※ Nota:
O pino GND e o pino VCC são intercambiáveis
Como Funciona
O eixo do potenciômetro pode girar de 0° (mais próximo do GND) até um ângulo limite superior (mais próximo do pino VCC), chamado ANGLE_MAX.
A tensão no pino de saída varia da tensão do GND até a tensão do VCC. A tensão de saída é diretamente proporcional ao ângulo de rotação do eixo.
- Se o ângulo for 0°, a tensão do pino de saída é 0V
- Se o ângulo for ANGLE_MAX, a tensão do pino de saída é a tensão do VCC
- Se o ângulo estiver entre 0° e ANGLE_MAX, output_voltage = angle × VCC / ANGLE_MAX
※ Nota:
O valor de ANGLE_MAX depende do fabricante. Na prática, geralmente NÃO nos importamos com o valor de ANGLE_MAX, exceto quando precisamos calcular o ângulo de rotação (veja a parte de casos de uso).

Arduino - Potenciômetro Rotativo
Os pinos A0 a A5 do Arduino podem funcionar como entrada analógica. O pino de entrada analógica converte a tensão (entre 0V e VCC) em valores inteiros (entre 0 e 1023), chamados de valor ADC ou valor analógico.
Conectando o pino de saída do potenciômetro a um pino de entrada analógica, podemos ler o valor analógico do pino e depois convertê-lo em um valor com significado.
O valor que o Arduino obtém NÃO é o ângulo, NÃO é a tensão. É um valor inteiro que varia de 0 a 1023.
Depois de obter o valor inteiro do pino de entrada analógica, reescalamos esse valor para outro valor. Vamos ver os casos de uso.
Casos de Uso
- Reescalar para o ângulo do potenciômetro.
- Reescalar para a tensão do potenciômetro:
- Reescalar para o valor controlável (por exemplo, volume do som, brilho, velocidade do motor DC... ). Este é o caso mais usado.
Faixa de Reescala
| DE | PARA | |||
|---|---|---|---|---|
| Ângulo | girado pelo usuário | 0° | → | ANGLE_MAX |
| Tensão | do pino do potenciômetro | 0V | → | VCC |
| Valor ADC | lido pelo Arduino | 0 | → | 1023 |
| Outro valor | convertido pelo Arduino | VALUE_MIN | → | VALUE_MAX |
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar o Potenciômetro
- Leia o valor de um pino de entrada, 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 ajustar 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() no lugar da função map().
Função floatMap():
Código Arduino
Passos Rápidos
- Copie o código acima e abra com a Arduino IDE
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino

- Abra o Serial Monitor
- Gire o potenciômetro
- Veja o resultado no Serial Monitor
Vídeo
Desafie-se
Use o potenciômetro para fazer um dos seguintes projetos:
- Controlar a posição do servo motor. Dica: Consulte Arduino - Servo Motor.
- Alterar o brilho do LED. Dica: Consulte Arduino - Fade de LED.
Conhecimento Adicional
- O pino GND e o pino VCC são intercambiáveis. Não existe uma convenção sobre esses dois pinos. Se você escolher um pino como GND, o outro será o pino VCC. Há apenas uma coisa que você precisa prestar atenção: o valor de tensão no pino de saída é invertido quando trocamos esses pinos.