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.
馃 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.
/*
* 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
馃挕 Conceptos Clave de la Misi贸n
- Lectura Anal贸gica: Medici贸n de un voltaje continuo que el Arduino convierte a un valor num茅rico (0-1023).
- Divisor de Voltaje: Un circuito simple con dos resistencias en serie que nos permite obtener un voltaje de salida proporcional a la relaci贸n entre las resistencias.
馃殌 隆Int茅ntalo T煤 Mismo! (Retos)
- Luz de Emergencia Inversa: Haz que el LED se encienda cuando haya MUCHA luz, como una alarma que te avisa si alguien enciende la luz de tu cuarto.
- Luz Regulable: En lugar de solo encender o apagar el LED, usa `analogWrite()` para que el brillo del LED aumente a medida que se hace m谩s oscuro.
- Calibraci贸n Autom谩tica: Al inicio del programa, haz que el Arduino mida la luz por 5 segundos y use ese valor promedio para establecer el `umbralOscuridad` autom谩ticamente.