// Vinheria Agnello - Monitor de Luminosidade
// FIAP 2026 | Edge Computing CP01
// LEDs com brilho proporcional via PWM
#define LDR A0
#define LED_V 9
#define LED_A 10
#define LED_R 11
#define BUZZER 8
#define LIMITE_OK 300
#define LIMITE_ALERTA 700
void setup() {
pinMode(LED_V, OUTPUT);
pinMode(LED_A, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
}
void loop() {
int lux = analogRead(LDR);
Serial.print("Luminosidade: ");
Serial.println(lux);
// Apaga tudo
analogWrite(LED_V, 0);
analogWrite(LED_A, 0);
analogWrite(LED_R, 0);
noTone(BUZZER);
if (lux < LIMITE_OK) {
// OK - brilho proporcional dentro da faixa 0~299
int brilho = map(lux, 0, LIMITE_OK, 10, 255);
analogWrite(LED_V, brilho);
} else if (lux < LIMITE_ALERTA) {
// Alerta - brilho proporcional dentro da faixa 300~699
int brilho = map(lux, LIMITE_OK, LIMITE_ALERTA, 10, 255);
analogWrite(LED_A, brilho);
} else {
// Critico - LED vermelho brilho máximo + buzzer 3s
analogWrite(LED_R, 255);
tone(BUZZER, 1000);
delay(3000);
noTone(BUZZER);
}
delay(500);
}