Tomo 5: El Ojo de la Noche - El Sensor de Luz LDR

Nuestros proyectos ya pueden reaccionar al tacto y al movimiento. Hoy les daremos la capacidad de "ver" la luz. Usaremos una LDR (Fotoresistencia) para crear un sistema que sepa si es de d铆a o de noche, sentando las bases para proyectos como luces nocturnas autom谩ticas o robots que siguen la luz.

馃 Protagonista de Hoy: La Fotoresistencia (LDR)

Una LDR (Light Dependent Resistor) es una resistencia muy especial: su valor en Ohms cambia dr谩sticamente seg煤n la cantidad de luz que la ilumina. A m谩s luz, menor resistencia; a mayor oscuridad, mayor resistencia. El Arduino no puede medir resistencia directamente, pero s铆 puede medir voltaje. Por eso, usamos un Divisor de Voltaje (la LDR y una resistencia fija de 10k惟) para convertir ese cambio de resistencia en un cambio de voltaje que podemos leer con un pin anal贸gico.

pinout LDR

馃 El C贸digo: Midiendo la Oscuridad

Usaremos la funci贸n `analogRead()` para obtener un valor entre 0 y 1023 que representa el nivel de luz. Luego, con un `if`, decidiremos si hay suficiente oscuridad para encender un LED.

C贸digo Arduino

/*
 * Misi贸n 05: El Ojo de la Noche
 * Descripci贸n: Enciende un LED autom谩ticamente cuando est谩 oscuro.
 * Por: Profe Campos
 * CECyTEM 05 Guacamayas
*/

const int pinLdr = A0;      // Pin anal贸gico para leer el divisor de voltaje.
const int pinLed = 9;       // Usamos el pin 9 que es PWM (~).

int valorLuz = 0;           // Variable para guardar la lectura del LDR.
int umbralOscuridad = 300; // Umbral. Si la lectura es MENOR a esto, est谩 oscuro.
                            // Este valor puede necesitar ajuste.

void setup() {
  pinMode(pinLed, OUTPUT);
  Serial.begin(9600); // Para poder ver los valores del sensor.
}

void loop() {
  // Leemos el valor del pin anal贸gico y lo guardamos.
  valorLuz = analogRead(pinLdr);
  
  // Imprimimos el valor en el Monitor Serial para poder calibrar el umbral.
  Serial.print("Valor de Luz: ");
  Serial.println(valorLuz);

  // Si el valor de luz es menor que nuestro umbral...
  if (valorLuz < umbralOscuridad) {
    digitalWrite(pinLed, HIGH); // ...encendemos la luz.
  } else { // Si no...
    digitalWrite(pinLed, LOW); // ...la apagamos.
  }
  delay(200); // Peque帽a pausa.
}
        

馃攲 Manos a la Obra: El Circuito

Construiremos una l谩mpara nocturna autom谩tica. El coraz贸n del circuito es el divisor de voltaje formado por la LDR y la resistencia de 10k惟. El punto medio es el que conectamos al pin A0.

Diagrama del Circuito 5

Diagrama de conexi贸n del sensor de luz LDR

馃挕 Conceptos Clave de la Misi贸n

馃殌 隆Int茅ntalo T煤 Mismo! (Retos)