Práctica Sensor de Luz con LDR y Arduino UNO
💡 Introducción
En esta práctica aprenderemos a utilizar un sensor de luz (LDR) para medir la intensidad luminosa del ambiente.
Con este sensor construiremos un medidor de luz que enciende diferentes LEDs dependiendo de cuánta iluminación se detecte.
Además, veremos los valores del sensor en tiempo real a través del Monitor Serial del Arduino IDE.
🎯 Objetivo
Construir un medidor de luz utilizando un fotoresistor (LDR), una resistencia fija y una placa Arduino UNO,
interpretando las lecturas del sensor para encender LEDs según el nivel de iluminación.
🧰 Materiales
| Cantidad | Componente |
|---|---|
| 1 | Arduino UNO |
| 1 | Fotoresistor (LDR) |
| 1 | Resistencia de 10 kΩ |
| 3 | Resistencias de 330 Ω |
| 3 | LEDs |
| — | Breadboard |
| — | Cables jumper |
📘 Fundamento Teórico
El LDR (Light Dependent Resistor) es un sensor cuya resistencia cambia según la luz recibida:
- Más luz → menor resistencia → mayor voltaje en A0
- Menos luz → mayor resistencia → menor voltaje en A0
Arduino mide este voltaje como un valor entre 0 y 1023.
Niveles de luz y LEDs
| Nivel | Valor ADC | LEDs |
|---|---|---|
| Bajo | 0–256 | Ninguno |
| Medio | 257–512 | LED 1 |
| Alto | 513–768 | LED 1 + LED 2 |
| Muy alto | 769–1023 | LED 1 + LED 2 + LED 3 |
🛠️ Procedimiento
1. Conexión del Sensor LDR
Conecta el LDR formando un divisor de voltaje:
- LDR → 5V
- Resistencia 10 kΩ → GND
- Unión entre LDR y resistencia → A0
2. Conexión de los LEDs
- LED 1 → Pin 2
- LED 2 → Pin 3
- LED 3 → Pin 4
- Cada LED con resistencia de 330 Ω
3. Montaje en Breadboard
Si deseas, puedo generarte una imagen tipo Fritzing para agregarla aquí.
💻 Código Arduino
int pinLed1 = 2; // Pines de los LEDs
int pinLed2 = 3;
int pinLed3 = 4;
int pinLDR = 0; // Pin analógico A0
int valorLDR = 0; // Variable que guarda la lectura del LDR
void setup() {
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
Serial.begin(9600); // Activar monitor serial
}
void loop() {
// Apagar LEDS al inicio del ciclo
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
// Leer valor del sensor LDR (0–1023)
valorLDR = analogRead(pinLDR);
// Enviar valor al monitor serial
Serial.println(valorLDR);
// Encender LEDs según la intensidad de luz
if (valorLDR > 256) {
digitalWrite(pinLed1, HIGH);
}
if (valorLDR > 512) {
digitalWrite(pinLed2, HIGH);
}
if (valorLDR > 768) {
digitalWrite(pinLed3, HIGH);
}
delay(200); // Pausa para estabilidad
}
📊 Resultados Esperados
- Con poca luz → ningún LED encendido.
- Luz media → LED 1.
- Luz alta → LED 1 y LED 2.
- Mucha luz → LED 1, LED 2 y LED 3.
- Monitor Serial mostrando valores del 0 al 1023.
📝 Conclusiones
El estudiante comprenderá:
- Cómo funciona un LDR
- Cómo leer un sensor analógico
- Cómo usar divisores de voltaje
- Cómo controlar LEDs desde Arduino
⭐ Actividades Complementarias
- Modificar los umbrales de luz.
- Registrar valores máximos y mínimos.
- Usar un buzzer en lugar de LEDs.
- Crear un sistema automático de iluminación.
