¡Felicidades por llegar al primer proyecto integrador! Es hora de combinar todo lo que hemos aprendido. Ya no trabajaremos con sensores por separado; los uniremos para crear un sistema más inteligente y útil. Construiremos un sistema de iluminación automática que solo se enciende cuando es necesario: cuando alguien está presente Y está oscuro.
🧠 La Lógica del Proyecto: El Poder del `&&` (Y)
La clave de este proyecto es la toma de decisiones basada en múltiples condiciones. En programación, usamos operadores lógicos para esto. El más importante hoy es el operador "Y" lógico, que en C++ se escribe como &&. La condición if (condicion1 && condicion2) solo será verdadera si AMBAS condiciones son verdaderas al mismo tiempo. Es la base para crear sistemas que responden a situaciones complejas del mundo real.
🧠 El Código: El Cerebro del Sistema
Este código lee los dos sensores (PIR y LDR) y usa una sola declaración `if` con el operador `&&` para controlar el LED.
/*
* PROYECTO INTEGRADOR 1: Iluminación Inteligente de Pasillos
* Descripción: Enciende una luz si se detecta movimiento Y está oscuro.
* Por: Profe Campos
* CECyTEM 05 Guacamayas
*/
const int pinPir = 2; // Pin del sensor de movimiento
const int pinLdr = A0; // Pin del sensor de luz
const int pinLed = 9; // Pin del LED que simula la luz del pasillo
int valorLuz; // Variable para la lectura del LDR
boolean hayMovimiento; // Variable para la lectura del PIR (true/false)
int umbralOscuridad = 400; // Umbral de oscuridad (ajustable)
void setup() {
pinMode(pinLed, OUTPUT);
pinMode(pinPir, INPUT);
// El pin A0 ya es una entrada por defecto
}
void loop() {
// Leemos ambos sensores en cada ciclo
valorLuz = analogRead(pinLdr);
hayMovimiento = digitalRead(pinPir);
// Aquí está la magia: la condición IF con el operador AND (&&)
// SI (hayMovimiento es VERDADERO Y el valorLuz es MENOR que el umbral)...
if (hayMovimiento == true && valorLuz < umbralOscuridad) {
digitalWrite(pinLed, HIGH); // ...entonces enciende la luz.
// Opcional: un delay aquí mantendría la luz encendida un tiempo fijo
// después de la última detección, pero el PIR ya tiene un ajuste para esto.
} else { // SI NO se cumplen AMBAS condiciones...
digitalWrite(pinLed, LOW); // ...asegúrate de que la luz esté apagada.
}
delay(300); // Pequeña pausa
}
🔌 Manos a la Obra: El Circuito
Integraremos los circuitos del sensor PIR y la LDR para controlar un solo LED, que simula la iluminación de un pasillo. La clave es organizar bien el cableado en la protoboard.
Diagrama del Circuito 6
💡 Conceptos Clave de la Misión
- Lógica Booleana: Usar operadores como AND (`&&`), OR (`||`) y NOT (`!`) para tomar decisiones basadas en múltiples condiciones.
- Integración de Sistemas: Combinar diferentes subsistemas (sensores, actuadores) para crear un proyecto funcional y complejo.
🚀 ¡Inténtalo Tú Mismo! (Retos)
- Modo Manual: Añade un botón al circuito. Si el botón es presionado, la luz debe encenderse sin importar lo que digan los sensores.
- Indicador de Estado: Añade un segundo LED (de otro color). Este LED debe estar siempre encendido si el sistema está en modo "automático" y parpadear si está en modo "manual".
- Ajuste de Sensibilidad: Añade un potenciómetro que permita ajustar el `umbralOscuridad` en tiempo real, sin tener que cambiar el código y volver a subirlo.