#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
// Inicializando o LCD no endereço I2C padrão (0x27 ou 0x3F são comuns)
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Altere o endereço caso necessário
// Inicializando o servo motor
Servo servo;
// Definindo os pinos do ESP32
const int potenciometroPin = 14; // Pino de sinal do potenciômetro
const int servoPin = 19; // Pino PWM do servo
void setup() {
// Configuração do servo motor
servo.attach(servoPin);
// Inicializando a comunicação serial para depuração
Serial.begin(115200);
// Inicializando o LCD
lcd.init(); // Inicializa o LCD
lcd.backlight(); // Liga a luz de fundo do LCD
// Exibindo mensagem inicial no LCD
lcd.setCursor(0, 0);
lcd.print("Inicializando...");
delay(1000);
lcd.clear();
}
void loop() {
// Lê o valor analógico do potenciômetro (0 a 4095 no ESP32)
int valorPotenciometro = analogRead(potenciometroPin);
// Converte o valor do potenciômetro para ângulo (0 a 180 graus)
int anguloServo = map(valorPotenciometro, 0, 4095, 0, 180);
// Move o servo para o ângulo correspondente
servo.write(anguloServo);
// Exibe o ângulo no monitor serial para depuração
Serial.print("Ângulo do Servo Motor: ");
Serial.println(anguloServo);
// Exibe o ângulo no LCD
lcd.setCursor(0, 0);
lcd.print("Servo motor SG90");
lcd.setCursor(0, 1);
lcd.print("Angulo: ");
lcd.print(anguloServo);
lcd.print(" "); // Apaga valores residuais
// Aguarda para evitar leituras muito rápidas
delay(100);
}