// Definição dos Pinos
const int pinoPotenciometro = 26; // Use um pino ADC do ESP32, ex: GPIO34
const int pinoLed = 13; // GPIO para o LED (saída PWM - LEDC)
const int pinoBuzzer = 25; // GPIO para o Buzzer (saída de Tom/PWM)
// Configurações do PWM para o LED (Brilho)
const int freqLed = 5000; // Frequência de 5 kHz (adequada para LED)
const int resolucaoLed = 10; // Resolução de 10 bits (0 a 1023)
// Nota sobre a API LEDC:
// A partir do Core v3.0 do ESP32, ledcSetup() e ledcAttachPin() foram
// combinadas na função ledcAttach(), e o canal é atribuído automaticamente.
void setup() {
Serial.begin(115200);
// 1. Configuração do Canal PWM do LED (Brilho)
// Novo formato: ledcAttach(PINO, FREQUENCIA, RESOLUCAO);
ledcAttach(pinoLed, freqLed, resolucaoLed);
// 2. Configuração do Pino do Buzzer
// Para a função tone(), basta definir o pinMode
pinMode(pinoBuzzer, OUTPUT);
}
void loop() {
// 1. Leitura do Potenciômetro
// O ADC do ESP32 é de 12 bits (0 a 4095 por padrão)
int valorPot = analogRead(pinoPotenciometro);
// 2. Controle do Brilho do LED (Intensidade)
// Mapeia o valor de 0-4095 (potenciômetro) para 0-1023 (resolução de 10 bits)
int dutyCycleLed = map(valorPot, 0, 4095, 0, (1 << resolucaoLed) - 1); // Mapeia para 0-1023
ledcWrite(pinoLed, dutyCycleLed); // Define o ciclo de trabalho do PWM
// 3. Controle da Frequência do Buzzer (Tom)
// Mapeia o valor de 0-4095 (potenciômetro) para uma faixa de frequência (ex: 100 Hz a 2000 Hz)
int frequenciaBuzzer = map(valorPot, 0, 4095, 100, 2000);
// Usa a função tone() simplificada do ESP32 para o tom.
// Ela automaticamente gerencia o PWM para criar a frequência.
if (frequenciaBuzzer > 100) {
// Toca o tom na frequência determinada pelo potenciômetro
tone(pinoBuzzer, frequenciaBuzzer);
} else {
// Desliga o som em valores muito baixos
noTone(pinoBuzzer);
}
// Debug (Opcional)
Serial.print("Pot: ");
Serial.print(valorPot);
Serial.print(" | Brilho (Duty): ");
Serial.print(dutyCycleLed);
Serial.print(" | Freq Buzzer: ");
Serial.println(frequenciaBuzzer);
delay(10); // Pequeno atraso para estabilização
}