// Photoresistor Light Sensor
// Turns on LED when light level is below 50%
const int ledPin = 27; // LED connected to GPIO27
const int ldrPin = 33; // Photoresistor connected to GPIO34 (ADC)
int ldrValue = 0; // Raw value from photoresistor
int lightPercent = 0; // Light intensity percentage
const int threshold = 50; // 50% threshold
void setup() {
Serial.begin(9600);
Serial.println("Light Sensor Started");
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Start with LED off
}
void loop() {
// Read photoresistor value (0-4095 on ESP32)
ldrValue = analogRead(ldrPin);
// Convert to percentage (0-100%)
// Note: More light = lower resistance = higher ADC value
// So we invert: 0% light = dark, 100% light = bright
lightPercent = map(ldrValue, 0, 4095, 0, 100);
// Print values for debugging
Serial.print("LDR Value: ");
Serial.print(ldrValue);
Serial.print(" | Light: ");
Serial.print(lightPercent);
Serial.println("%");
// Check if light is below 50%
if(lightPercent < threshold) {
digitalWrite(ledPin, HIGH); // Turn LED ON
Serial.println("LED ON - Light below 50%");
} else {
digitalWrite(ledPin, LOW); // Turn LED OFF
Serial.println("LED OFF - Light above 50%");
}
delay(500); // Wait half a second before next reading
}LED 27 PIN OUTPUT
BUTTON 33 PIN INPUT