ESP32 - Servo Motor controlado por Potenciômetro

Este tutorial ensina você a usar o ESP32 com servo motor e potenciômetro. Em detalhes, o ângulo do servo motor é proporcional ao valor lido do potenciômetro.

Sobre o Servo Motor e o Potenciômetro

Temos tutoriais específicos sobre servo motor e potenciômetro. Cada tutorial contém informações detalhadas e instruções passo a passo sobre pinagem do hardware, princípio de funcionamento, ligação ao ESP32, código ESP32... Saiba mais sobre eles nos links a seguir:

Diagrama de Ligação

Diagrama de Ligação do Servo Motor e Potenciômetro com ESP32

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.

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-servo-motor-controlled-by-potentiometer */ #include <ESP32Servo.h> #define PIN_POTENTIOMETER 36 // ESP32 pin GPIO36 (ADC0) onnected to potentiometer #define PIN_SERVO 26 // ESP32 pin GPIO26 onnected to servo motor Servo myServo; // create servo object to control a servo void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); myServo.attach(PIN_SERVO); // attaches ESP32 pin to the servo object } void loop() { // reads the value of the potentiometer (value between 0 and 4095) int analogValue = analogRead(PIN_POTENTIOMETER); // scales it to use it with the servo (value between 0 and 180) int angle = map(analogValue, 0, 4095, 0, 180); // sets the servo position according to the scaled value myServo.write(angle); // print out the value Serial.print("Analog value: "); Serial.print(analogValue); Serial.print(" => Angle: "); Serial.println(angle); delay(100); }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Clique no ícone Libraries na barra esquerda da Arduino IDE.
  • Digite ESP32Servo na caixa de pesquisa e procure a biblioteca de servo de Kevin Harrington,John K. Bennett.
  • Clique no botão Install para instalar a biblioteca de servo motor para o ESP32.
Biblioteca de servo motor para ESP32
  • 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
Carregar código na Arduino IDE
  • Abra o Serial Monitor na Arduino IDE
Como abrir o Serial Monitor na Arduino IDE
  • Ajuste o potenciômetro
  • Veja a rotação do servo motor
  • Veja o resultado no Serial Monitor. Ele se parece com o mostrado abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Analog value: 0 => Angle: 0 Analog value: 85 => Angle: 14 Analog value: 201 => Angle: 35 Analog value: 286 => Angle: 50 Analog value: 370 => Angle: 65 Analog value: 444 => Angle: 78 Analog value: 521 => Angle: 91 Analog value: 608 => Angle: 106 Analog value: 690 => Angle: 121 Analog value: 793 => Angle: 139 Analog value: 907 => Angle: 159 Analog value: 4095 => Angle: 180 Analog value: 4095 => Angle: 180
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Explicação do Código Linha por Linha

O código ESP32 acima contém explicações linha por linha. Leia os comentários no código!

※ 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

Vídeo

※ 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!