// Definição dos pinos
const int ldrPin = A0; // Sensor de luminosidade
const int ledPin = 11; // LED controlado por PWM
const int potPin = A1; // Potenciômetro
const int buttonPin = 2; // Botão para alternar o modo
// Variáveis para controle
bool automaticMode = true; // Modo inicial (automático)
int lastButtonState = LOW; // Estado anterior do botão
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600); // Para monitoramento via Serial
}
void loop() {
// Leitura do sensor de luminosidade
int ldrValue = analogRead(ldrPin);
// Leitura do potenciômetro
int potValue = analogRead(potPin);
// Controle de botão com debounce
int reading = digitalRead(buttonPin);
if (reading == LOW && lastButtonState == HIGH && (millis() - lastDebounceTime > debounceDelay)) {
automaticMode = !automaticMode; // Alterna o modo
lastDebounceTime = millis();
}
lastButtonState = reading;
// Controle do LED
if (automaticMode) {
// Ajusta o brilho automaticamente com base no LDR
int brightness = map(ldrValue, 0, 1023, 255, 0); // Mapeia o valor do LDR para o brilho
analogWrite(ledPin, brightness);
} else {
// Controle manual pelo potenciômetro
int brightness = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, brightness);
}
// Monitoramento
Serial.print("Modo: ");
Serial.println(automaticMode ? "Automático" : "Manual");
delay(100); // Pequeno delay para suavizar leituras
}