Capacitación Arduino · Sensor de luz
Una fotorresistencia mide la luz de la sala: cuando oscurece, el Arduino enciende una lámpara (LED amarillo). Simulado en Tinkercad y en OpenCircuits.
El componente
| Luz en la sala | Resistencia del LDR | Lectura en A0 |
|---|---|---|
| Oscuridad | ≈ 200 kΩ o más | ≈ 50 |
| Atardecer | ≈ 13 kΩ | ≈ 430 |
| Sala iluminada | ≈ 1 kΩ | ≈ 900 |
Cómo funciona
analogRead(A0): de 0 a 1023.Para simular
LDR GL5528 y una resistencia de 10 kΩ (café, negro, naranja).
| Qué revisar | Tinkercad trae | Pon esto (como el kit) |
|---|---|---|
| Componente | Fotorresistencia | la misma |
| Resistencia fija | 1 kΩ | 10 kΩ |
| Orden del divisor | — | LDR a 5V, resistencia a GND, unión a A0 |
| Lámpara | LED rojo | LED amarillo con 220 Ω en D6 |
Con 1 kΩ la lectura queda casi siempre baja y la lámpara no se apaga.
Paso 1 · Componentes
Buscar: Arduino
Buscar: Placa de pruebas
Buscar: fotorresistencia o LDR.
Para el divisor con el LDR.
Para el LED.
La lámpara.
Paso 2 · Circuito
Paso 2 · Conexiones
| Alimentación | ||
| Arduino 5V | Riel + inferior | |
| Arduino GND | Riel − inferior | |
| Divisor del LDR | ||
| — | LDR (fila e) | Columnas 20 y 21 |
| Columna 20 | Riel + | |
| — | 10 kΩ | Columna 21 → 25 (fila c) |
| Columna 25 | Riel − | |
| Columna 21 (unión) | Arduino A0 | |
| Lámpara · LED amarillo | ||
| — | LED cátodo / ánodo (fila e) | Columna 3 / 4 |
| — | 220 Ω | Columna 4 → 8 (fila c) |
| Arduino D6 | Columna 8 | |
| Columna 3 | Riel − | |
Paso 3 · Código en bloques
Variables → Crear variable: luz.
Paso 3 · Código C++
// C++ code // int luz = 0; void setup() { pinMode(A0, INPUT); Serial.begin(9600); pinMode(6, OUTPUT); }
void loop() { luz = analogRead(A0); Serial.println(luz); if (luz < 500) { digitalWrite(6, HIGH); } else { digitalWrite(6, LOW); } delay(200); // Wait for 200 millisecond(s) }
Paso 4 · Simular
| Siempre encendida | La resistencia es de 1 kΩ: cámbiala a 10 kΩ. |
| Funciona al revés | El LDR y la resistencia están intercambiados: el LDR va hacia 5V. |
| A0 no cambia | El cable de A0 debe ir a la columna 21, donde se unen el LDR y la resistencia. |
| LED no enciende | Revisa la orientación (pata doblada = ánodo). |
Paso 5 · Kit real
| Desde | Hacia |
|---|---|
| Pata del LDR | 5V |
| Otra pata del LDR + 10 kΩ | A0 |
| Otra pata de la 10 kΩ | GND |
| LED amarillo (con 220 Ω) | D6 |
No hace falta ninguna biblioteca: copia el C++ de la diapositiva 9 en el Arduino IDE y súbelo.
La luz de cada sala es distinta: por eso el umbral se ajusta con el Monitor serie.
Alternativa · OpenCircuits
La categoría LDR lee el divisor directamente: un bloque muestra la luz en el Monitor serie y otro responde «¿poca luz? (menor que 500)». No hace falta variable.
El circuito es el mismo de Tinkercad: solo cambian los bloques.
// C++ code // void setup() { Serial.begin(9600); pinMode(6, OUTPUT); }
void loop() { Serial.print("Luz: "); Serial.println(analogRead(A0)); if (analogRead(A0) < 500) { digitalWrite(6, HIGH); } else { digitalWrite(6, LOW); } delay(200); // Wait for 200 millisecond(s) }
Para seguir
Que la lámpara brille más mientras más oscuro: usa analogWrite(6, …) con «asignar al rango».
Usa dos umbrales (encender bajo 450, apagar sobre 550) para que no titile al atardecer.
Si alguien abre una caja (entra luz), suena el buzzer.
Muestra el nivel de luz en la LCD I2C como porcentaje.