Capacitación Arduino · Sensor de luz

LDR
¿Ya
oscureció?

Una fotorresistencia mide la luz de la sala: cuando oscurece, el Arduino enciende una lámpara (LED amarillo). Simulado en Tinkercad y en OpenCircuits.

Entrada analógica Divisor de voltaje Bloques + C++

El componente

Fotorresistencia LDR (GL5528)

Pista de CdSPata 1Pata 2 con luz conduce másno tiene polaridadse puede dar vuelta LDR + resistencia de 10 kΩ → A0
Luz en la salaResistencia del LDRLectura en A0
Oscuridad≈ 200 kΩ o más≈ 50
Atardecer≈ 13 kΩ≈ 430
Sala iluminada≈ 1 kΩ≈ 900
Es una resistencia que baja con la luz. El Arduino no mide resistencia, mide voltaje: por eso se arma un divisor con una resistencia fija de 10 kΩ.
Con el LDR hacia 5V y la resistencia hacia GND: más luz = número más alto en A0.

Cómo funciona

Un divisor de voltaje

5VGND LDR 10 kΩ A0 Lectura de A0 durante el día umbral 500 lámpara lámpara de día: apagada
  1. Con luz, el LDR baja su resistencia y A0 recibe más voltaje.
  2. Con poca luz, el LDR sube su resistencia y A0 baja.
  3. Arduino lo lee con analogRead(A0): de 0 a 1023.
  4. Si baja de 500, enciende la lámpara (LED amarillo en D6).

Para simular

Tinkercad la tiene: «Fotorresistencia»

En el kit real

LDR GL5528 y una resistencia de 10 kΩ (café, negro, naranja).

En Tinkercad: revisa estas propiedades

Qué revisarTinkercad traePon esto (como el kit)
ComponenteFotorresistenciala misma
Resistencia fija1 kΩ10 kΩ
Orden del divisor—LDR a 5V, resistencia a GND, unión a A0
LámparaLED rojoLED amarillo con 220 Ω en D6

Con 1 kΩ la lectura queda casi siempre baja y la lámpara no se apaga.

Al simular, haz clic en la fotorresistencia: aparece una barra de luz. Muévela para hacer de día o de noche.

Paso 1 · Componentes

Búscalos en el panel de componentes de Tinkercad

Arduino Uno R3 ×1

Buscar: Arduino

Placa de pruebas pequeña ×1

Buscar: Placa de pruebas

Fotorresistencia ×1

Buscar: fotorresistencia o LDR.

Resistencia 10 kΩ ×1

Para el divisor con el LDR.

Resistencia 220 Ω ×1

Para el LED.

LED amarillo ×1

La lámpara.

Para cambiar el valor de una resistencia o el color del LED, haz clic en el componente y edítalo en el cuadro de propiedades.

Paso 2 · Circuito

Así se ve en Tinkercad

Luz 301 lux A0 0 Lámpara APAGADA

      

Paso 2 · Conexiones

Conexión por conexión

Alimentación
Arduino 5VRiel + inferior
Arduino GNDRiel − inferior
Divisor del LDR
—LDR (fila e)Columnas 20 y 21
Columna 20Riel +
—10 kΩColumna 21 → 25 (fila c)
Columna 25Riel −
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 D6Columna 8
Columna 3Riel −
Todo va en los rieles de abajo (+ y −). La columna 21 une el LDR, la resistencia de 10 kΩ y el cable de A0.

Paso 3 · Código en bloques

Arrastra estos bloques · todo dentro de «siempre»

Antes de empezar

Variables → Crear variable: luz.

El Monitor serie muestra el valor de la luz: sirve para elegir el umbral (aquí 500).
Controlsiempre, si / si no, esperar
Entradaleer pin analógico A0
Matemáticascomparar ( < )
Variablesdefinir luz en, luz
Salidaimprimir en monitor serie, definir pin 6

Paso 3 · Código C++

El mismo programa en texto

// C++ code
//
int luz = 0;

void setup()
{
  pinMode(A0, INPUT);
  Serial.begin(9600);
  pinMode(6, OUTPUT);
}
En Tinkercad: Código → Bloques → Texto. Acepta el aviso, borra lo que haya y pega.
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

¡A probar!

  1. Pulsa Iniciar simulación y abre el Monitor en serie: aparece el valor de la luz.
  2. Haz clic en la fotorresistencia y baja su barra (noche): bajo 500 se enciende la lámpara.
  3. Súbela (día): la lámpara se apaga.
  4. Cambia el 500 del bloque para que se encienda antes o después.

Si algo no funciona

Siempre encendidaLa resistencia es de 1 kΩ: cámbiala a 10 kΩ.
Funciona al revésEl LDR y la resistencia están intercambiados: el LDR va hacia 5V.
A0 no cambiaEl cable de A0 debe ir a la columna 21, donde se unen el LDR y la resistencia.
LED no enciendeRevisa la orientación (pata doblada = ánodo).

Paso 5 · Kit real

Del simulador a la sala real

Mismas conexiones, mismo código

DesdeHacia
Pata del LDR5V
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.

Calibración

  1. Abre el Monitor serie y anota el valor con la luz de la sala.
  2. Tapa el LDR con la mano y anota el valor a oscuras.
  3. Pon como umbral un número entre los dos (en vez de 500).

La luz de cada sala es distinta: por eso el umbral se ajusta con el Monitor serie.

Alternativa · OpenCircuits

En OpenCircuits el LDR tiene bloques propios

Luz 301 lux Lámpara APAGADA

          Iniciar.bat → SensoresSensor de luz LDR · Luz automática
        

Los bloques nuevos

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.

LDRLDR pin A0: mostrar luz · ¿poca luz? (menor que 500)
Controlsiempre, si / si no, esperar
Salidadefinir pin 6 en ALTA o BAJA

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)
}
Este texto lo escribe OpenCircuits a partir de los bloques. Funciona igual en el kit real, sin bibliotecas.

Para seguir

Retos

1 · Lámpara regulable

Que la lámpara brille más mientras más oscuro: usa analogWrite(6, …) con «asignar al rango».

2 · Sin parpadeo

Usa dos umbrales (encender bajo 450, apagar sobre 550) para que no titile al atardecer.

3 · Alarma de caja

Si alguien abre una caja (entra luz), suena el buzzer.

4 · Luz en pantalla

Muestra el nivel de luz en la LCD I2C como porcentaje.

← → para avanzar · + − acercar el circuito · F pantalla completa