#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configuração do LCD (endereço 0x27, 16 colunas, 2 linhas)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pinos
#define PIN_LDR 33
#define PIN_LED 2
// Limite de luminosidade
#define LIMITE 50
void setup() {
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
// Inicializa o LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
delay(2000);
lcd.clear();
}
void loop() {
// Lê o valor bruto do LDR (0 a 4095)
int leituraBruta = analogRead(PIN_LDR);
// Converte para percentual de luminosidade
// Como o módulo é invertido, invertemos o mapeamento
int luminosidade = map(leituraBruta, 4095, 0, 0, 100);
// Exibe no Serial Monitor
Serial.print("Luminosidade: ");
Serial.print(luminosidade);
Serial.println("%");
// Atualiza a linha 1 do LCD
lcd.setCursor(0, 0);
lcd.print("Lum: ");
lcd.print(luminosidade);
lcd.print("% ");
// Controla o LED com base no percentual
if (luminosidade < LIMITE) {
digitalWrite(PIN_LED, HIGH);
lcd.setCursor(0, 1);
lcd.print("Luz: LIGADA ");
} else {
digitalWrite(PIN_LED, LOW);
lcd.setCursor(0, 1);
lcd.print("Luz: DESLIGADA ");
}
delay(500);
}