// Define os pinos
#define LED_PIN 2 // Pino do LED (PWM)
#define POT_PIN 34 // Pino do potenciômetro (analógico)
#define BUTTON_PIN 32 // Pino do botão (digital)
#define PWM_CHANNEL 0 // Canal PWM para o LED (0 a 15)
#define PWM_FREQ 5000 // Frequência PWM em Hz
#define PWM_RESOLUTION 8 // Resolução do PWM (8 bits: 0-255)
int ledBrightness = 0;
bool ledState = false;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(POT_PIN, INPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
ledcSetup(PWM_CHANNEL, PWM_FREQ, PWM_RESOLUTION);
ledcAttachPin(LED_PIN, PWM_CHANNEL);
}
void loop() {
// Lê o valor do botão
int buttonState = digitalRead(BUTTON_PIN);
// Se o botão for pressionado, ativa o LED
if (buttonState == LOW) {
delay(50); // Debounce do botão
if (digitalRead(BUTTON_PIN) == LOW) {
ledState = true;
// Ativa o LED com o brilho atual
ledcWrite(PWM_CHANNEL, ledBrightness);
}
} else {
// Se o botão não estiver pressionado, desliga o LED
ledState = false;
ledcWrite(PWM_CHANNEL, 0);
}
// Lê o valor do potenciômetro
int potValue = analogRead(POT_PIN);
ledBrightness = map(potValue, 0, 4095, 0, 255); // Mapeia o valor do potenciômetro para o brilho do LED
// Se o LED estiver ligado, atualize o brilho
if (ledState) {
ledcWrite(PWM_CHANNEL, ledBrightness);
}
Serial.println(ledBrightness);
}