Bu yazıyı Türkçe okuyun · Read in English
¿Qué hace este proyecto?
Construimos una luz nocturna que se enciende sola cuando la habitación se oscurece y se apaga cuando hay más luz. Una resistencia dependiente de la luz (LDR) mide la luz de la habitación y Arduino ajusta el brillo del LED según esa medida. Cuando la habitación está totalmente a oscuras, el LED brilla al máximo.
- Edad: a partir de 9 años
- Nivel: Principiante
- Tiempo: unos 30 minutos
- Qué aprenderás: leer un sensor analógico, usar
map()yconstrain(), regular el brillo de un LED con PWM
Lista de materiales
| Material | Cant. |
|---|---|
| Arduino Uno (o compatible) | 1 |
| LDR (resistencia dependiente de la luz) | 1 |
| Resistencia de 10 kΩ | 1 |
| LED blanco o amarillo | 1 |
| Resistencia de 220 Ω | 1 |
| Protoboard | 1 |
| Cables puente macho-macho | ~8 |
| Cable USB | 1 |
Conexiones

| Componente | Conexión | Pin de Arduino |
|---|---|---|
| LDR | Una pata | 5V |
| LDR | La otra pata | A0 |
| Resistencia de 10 kΩ | Entre A0 y GND | A0 / GND |
| LED | Pata larga (a través de 220 Ω) | D9 |
| LED | Pata corta | GND |
La LDR y la resistencia de 10 kΩ forman juntas un divisor de tensión. Cuanta más luz hay, mayor es el valor en A0.
Código
// Luz nocturna automática con Arduino - ozandamci.com
const int ldrPin = A0;
const int ledPin = 9; // pin PWM (marcado con ~)
// Ajusta estos valores a tu habitación (míralos en el Monitor Serie)
const int darkValue = 200; // por debajo de esto: "oscuridad total"
const int brightValue = 700; // por encima de esto: "hay bastante luz"
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int light = analogRead(ldrPin); // 0 - 1023
Serial.print("Luz: ");
Serial.println(light);
// Mantiene el valor dentro de los límites y lo invierte para obtener el brillo
int limited = constrain(light, darkValue, brightValue);
int brightness = map(limited, darkValue, brightValue, 255, 0);
analogWrite(ledPin, brightness);
delay(100);
}
Paso a paso
- Coloca la LDR. Pon la LDR en la protoboard. Conecta una pata al pin 5V de Arduino.
- Monta el divisor de tensión. Conecta la otra pata de la LDR a A0. Pon la resistencia de 10 kΩ en ese mismo punto y conecta su otro extremo a GND.
- Coloca el LED. Conecta una resistencia de 220 Ω a la pata larga del LED y llévala a D9; conecta la pata corta a GND.
- Sube el código. En el Arduino IDE, elige tu placa y tu puerto y haz clic en Subir.
- Calibra. Abre Herramientas → Monitor Serie. Anota el valor con la luz normal de la habitación y el valor cuando tapas la LDR con la mano. Pon esos dos números en
brightValueydarkValueen el código y súbelo de nuevo. - Pruébalo. Tapa poco a poco la LDR con la mano. El LED debería brillar cada vez más.
Solución de problemas
- El LED está siempre al máximo o siempre tenue: Puede que los valores de calibración no encajen con tu habitación; repite el paso 5.
- Funciona al revés (se enciende cuando hay mucha luz): La LDR y la resistencia de 10 kΩ están intercambiadas; la LDR debe estar en el lado de 5V.
Pruébalo tú mismo
- Usa un LED RGB y crea una lámpara que cambie de color en la oscuridad.
- Mete la lámpara en una caja de cartón o impresa en 3D.

Birisi “Luz nocturna automática con Arduino y sensor de luz LDR (materiales y código)” üzerinde düşündü