#define led_pwm 4
#define chave_modo 5
#define ldr 34
#define pot 33
#define led_modo 15
int ldrValue = 0;
int potValue = 0;
int mode = 0;
void setup() {
pinMode(led_pwm, OUTPUT);
pinMode(chave_modo, INPUT);
pinMode(led_modo, OUTPUT);
pinMode(ldr, INPUT);
Serial.begin(115200);
ledcAttach(led_pwm, 5000, 10);
}
void loop() {
mode = digitalRead(chave_modo);
if (mode == HIGH) {
digitalWrite(led_modo, HIGH);
Serial.println(" Modo automático");
controlAutoMode();
} else {
digitalWrite(led_modo, LOW);
Serial.println(" Modo manual");
controlManualMode();
}
delay(10);
}
void controlAutoMode() {
ldrValue = analogRead(ldr);
int pwmValue = map(ldrValue, 0, 1023, 255, 0);
float tensao = ldrValue * 5.0 / 1023.0;
if (tensao > 0) {
ldrValue = (2500 / tensao - 500) / 10;
} else {
ldrValue = 0;
}
ldrValue = constrain(ldrValue, 0, 255);
ledcWrite(led_pwm, ldrValue);
Serial.print("LDR: ");
Serial.print(ldrValue);
Serial.print(" PWM: ");
Serial.println(pwmValue);
}
void controlManualMode() {
potValue = analogRead(pot);
int pwmValue = map(potValue, 0, 4095, 0, 4095);
ledcWrite(led_pwm, potValue);
Serial.print("Potenciômetro: ");
Serial.print(potValue);
Serial.print(" PWM: ");
Serial.println(pwmValue);
}