#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pins
int ldrPin = A0;
int led1 = 9;
int led2 = 10;
// 🔧 Calibrated LDR values (adjust if needed)
int LDR_DARK = 600; // value when light = 0
int LDR_LIGHT = 200; // value when bright light
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
int ldrValue = analogRead(ldrPin);
// 🔁 Convert to percentage (corrected + calibrated)
int brightnessPercent = map(ldrValue, LDR_LIGHT, LDR_DARK, 100, 0);
brightnessPercent = constrain(brightnessPercent, 0, 100);
// 💡 LED brightness control
int ledBrightness = map(ldrValue, LDR_LIGHT, LDR_DARK, 255, 0);
ledBrightness = constrain(ledBrightness, 0, 255);
analogWrite(led1, ledBrightness);
analogWrite(led2, ledBrightness);
// 📺 LCD Display
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Light Level:");
lcd.setCursor(0, 1);
lcd.print(brightnessPercent);
lcd.print("%");
// 🖥 Serial Monitor (for debugging)
Serial.print("LDR: ");
Serial.print(ldrValue);
Serial.print(" | %: ");
Serial.print(brightnessPercent);
Serial.print(" | LED: ");
Serial.println(ledBrightness);
delay(500);
}