const int potPin = 34; // Potenciômetro (entrada analógica)
const int buttonPin = 12; // Botão (entrada digital com pull-up)
const int led1Pin = 14; // LED 1 (digital)
const int led2Pin = 27; // LED 2 (PWM)
// Variáveis do botão
bool lastButtonState = HIGH;
bool led1ToggleState = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
// Configura os pinos
pinMode(buttonPin, INPUT_PULLUP);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
Serial.begin(115200);
}
void loop() {
int potValue = analogRead(potPin);
int pwmValue = map(potValue, 0, 4095, 0, 255); // Mapeia o valor do potenciômetro para PWM (0-255)
// Controla o brilho do LED 2 usando analogWrite (PWM)
analogWrite(led2Pin, pwmValue);
// Leitura do botão com debounce
bool reading = digitalRead(buttonPin);
// LED 1 acende enquanto o botão está pressionado
digitalWrite(led1Pin, reading == LOW ? HIGH : LOW);
// Detecta clique (transição de HIGH para LOW)
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (lastButtonState == HIGH && reading == LOW) {
// Clique detectado → alterna estado do LED 1
led1ToggleState = !led1ToggleState;
digitalWrite(led1Pin, led1ToggleState ? HIGH : LOW); // Alterna LED 1
Serial.println("Botão clicado!");
}
}
lastButtonState = reading;
delay(10); // Pequeno delay para estabilidade
}