ESP8266 - Potenciômetro

Este tutorial ensina você a usar o ESP8266 com um potenciômetro, também conhecido como pot, trimmer, resistor variável, reostato ou sensor de ângulo rotativo. Em detalhes, vamos aprender:

Sobre o Potenciômetro

Um potenciômetro rotativo também é conhecido como pot, trimmer, resistor variável, reostato ou sensor de ângulo rotativo. Ele é usado para ajustar manualmente o valor de alguma coisa. Alguns exemplos são o volume de um aparelho de som, o brilho de uma lâmpada e o nível de zoom de um osciloscópio.

Pinagem do potenciômetro

A Pinagem do Potenciômetro

Um potenciômetro normalmente tem três pinos:

  • O pino GND deve ser conectado ao terra (0V).
  • O pino VCC deve ser conectado à fonte de tensão (5V ou 3.3V).
  • O pino de saída envia a tensão para o pino de entrada do Arduino.
Pinagem do potenciômetro

※ Nota:

Os pinos GND e VCC podem ser trocados.

Como Funciona

A rotação do eixo do potenciômetro pode ir de 0°, que é a posição mais próxima do GND, até um ângulo máximo, que é a posição mais próxima do pino VCC, chamado de ANGLE_MAX.

※ Nota:

O valor de ANGLE_MAX é determinado pelo fabricante. Em geral, não precisamos nos preocupar com esse valor, a menos que estejamos calculando um ângulo de rotação (veja a seção de casos de uso).

Como o Potenciômetro Funciona

O princípio de funcionamento:

  • Um usuário gira o eixo do potenciômetro
  • ⇒ O ângulo do potenciômetro muda
  • ⇒ A resistência do potenciômetro muda
  • ⇒ A tensão no pino de saída do potenciômetro muda
  • ⇒ O valor analógico lido pelo ESP8266 muda

ESP8266 - Potenciômetro Rotativo

Alguns dos pinos do ESP8266 são capazes de funcionar como entrada analógica. Esses pinos de entrada analógica convertem a tensão (variando de 0v a VCC) em valores inteiros (de 0 a 1023), chamados de valor ADC ou valor analógico.

Podemos conectar um pino de saída do potenciômetro a um pino de entrada analógica. Isso nos permite ler o valor analógico do pino e convertê-lo em um valor com significado.

O valor que o ESP8266 recebe não é um ângulo nem uma tensão; é um valor inteiro que varia de 0 a 1023.

Depois de obtermos o valor inteiro do pino de entrada analógica, podemos reescalar esse valor para outro. Vamos considerar as aplicações.

Casos de Uso

  • Reescalar para o ângulo do potenciômetro.
  • Reescalar para a tensão do potenciômetro.
  • Reescalar para um valor controlável, como o volume de um aparelho de som, o brilho ou a velocidade de um motor DC - este é o caso de uso mais comum.

Reescalar o Intervalo

DE PARA
Ângulogirado pelo usuário 0° → ANGLE_MAX
Tensãodo pino do potenciômetro 0V → VCC
Valor ADClido pelo Arduino 0 → 1023
Outro valorconvertido pelo Arduino VALUE_MIN → VALUE_MAX

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com potenciômetro

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Como Programar para o Potenciômetro

  • Acesse o pino de saída do potenciômetro com analogRead() e leia o valor do pino de entrada.
analog_value = analogRead(A0);
  • Use a função map() para ajustar o ângulo do potenciômetro.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Ajuste a tensão para o nível do potenciômetro.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Reescale o valor para algo que possa ser controlado, como o volume de um aparelho de som, o brilho ou a velocidade de um motor DC.
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Por exemplo, podemos ajustar o brilho de um LED por meio de reescala. Conforme indicado em , o brilho do LED pode ser regulado com um valor PWM que varia de 0 (completamente apagado) a 255 (totalmente aceso). Assim, podemos mapear o valor analógico para o brilho do LED (de apagado até o mais brilhante) assim:
brightness = map(analog_value, 0, 1023, 0, 255);

Se você deseja ajustar o LED de uma luz noturna fraca até o brilho máximo,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 1023, nightlight , 255);

※ Nota:

A função map() se limita a reescalar um valor analógico para o tipo int ou long. Se o valor controlável for do tipo float, a função floatMap() deve ser usada no lugar de map().

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; }

Código ESP8266

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-potentiometer */ #define POTENTIOMETER_PIN A0 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 function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin: int analog_value = analogRead(POTENTIOMETER_PIN); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Passos Rápidos

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Faça a ligação dos componentes conforme mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Copie o código e abra-o no Arduino IDE.
  • Depois de aberto, pressione o botão Upload para transferir o código para o ESP8266.
Arduino IDE Upload Code
  • Abra o Serial Monitor.
  • Gire o potenciômetro.
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Nota:

Este tutorial usa a função analogRead() para obter dados de um ADC (Conversor Analógico-Digital) conectado a um sensor ou a outra peça. O ADC do ESP8266 funciona bem em projetos nos quais você não precisa de leituras muito precisas. Mas lembre-se: o ADC do ESP8266 não é muito preciso para medições detalhadas. Se o seu projeto precisa ser muito preciso, você pode usar um ADC separado, como o ADS1115, com o ESP8266, ou usar um Arduino como o Arduino Uno R4 WiFi, que tem um ADC mais confiável.

Vídeo

Desafie-se

Use o potenciômetro para realizar uma das seguintes tarefas:

Conhecimento Adicional

  • Os pinos GND e VCC podem ser trocados, sem nenhuma convenção específica. Tudo o que você precisa ter em mente é que o valor da tensão no pino de saída será invertido quando esses pinos forem trocados.

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!