/********
controle de brilho do led usando PWM
botao pino 12 reduz brilho e o 14 aumenta
estão sendo usados 20 passos para passar de 0% a 100% de brilho
Saída serial exibindo o percentual atual
******/
#define LED_PIN 17
#define BTN_DOWN_PIN 12
#define BTN_UP_PIN 14
#define PWM_FREQ 5000
#define PWM_RESOLUTION 8 // 0..255
#define MAX_STEP 20 // 0..20 -> ~5% por passo
int brilhoStep = 0;
bool lastBtnDown = HIGH;
bool lastBtnUp = HIGH;
void atualizarPWM() {
int duty = map(brilhoStep, 0, MAX_STEP, 0, 255);
ledcWrite(LED_PIN, duty);
int porcentagem = (brilhoStep * 100) / MAX_STEP;
Serial.print("Brilho: ");
Serial.print(porcentagem);
Serial.println("%");
}
void setup() {
Serial.begin(115200);
pinMode(BTN_DOWN_PIN, INPUT_PULLUP);
pinMode(BTN_UP_PIN, INPUT_PULLUP);
// API nova do Arduino-ESP32 3.x
ledcAttach(LED_PIN, PWM_FREQ, PWM_RESOLUTION);
atualizarPWM();
}
void loop() {
bool btnDown = digitalRead(BTN_DOWN_PIN);
bool btnUp = digitalRead(BTN_UP_PIN);
// Botão 12: diminui brilho
if (lastBtnDown == HIGH && btnDown == LOW) {
if (brilhoStep > 0) {
brilhoStep--;
atualizarPWM();
}
}
// Botão 14: aumenta brilho
if (lastBtnUp == HIGH && btnUp == LOW) {
if (brilhoStep < MAX_STEP) {
brilhoStep++;
atualizarPWM();
}
}
lastBtnDown = btnDown;
lastBtnUp = btnUp;
delay(30);
}