// Definimos los pines para cada componente
const int pirPin = 2; // Sensor PIR en el pin 2
const int gasPin = A0; // Sensor de gas en el pin A0
const int relayPin1 = 3; // Relé 1 en el pin 3
const int relayPin2 = 4; // Relé 2 en el pin 4
const int ldrPin = A1; // Fotoresistencia en el pin A1
const int ldrThreshold = 500; // Umbral de luminosidad para encender las luces externas
// Definimos variables para el estado de los componentes
bool motionDetected = false;
bool gasDetected = false;
bool ldrEnabled = false;
void setup() {
// Inicializamos los pines
pinMode(pirPin, INPUT);
pinMode(gasPin, INPUT);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(ldrPin, INPUT);
// Desactivamos los relés al inicio
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
// Iniciamos la comunicación serial (opcional)
Serial.begin(9600);
}
void loop() {
// Leemos el estado del sensor PIR
motionDetected = digitalRead(pirPin);
// Si se detecta movimiento, encendemos las luces internas
if (motionDetected) {
digitalWrite(relayPin1, HIGH);
delay(500); // Esperamos un momento para asegurarnos de que las luces se encienden correctamente
} else {
digitalWrite(relayPin1, LOW);
}
// Leemos el estado del sensor de gas
gasDetected = (analogRead(gasPin) > 500); // Si el valor leído es mayor a 500, asumimos que hay gas
// Si detectamos gas, activamos la alarma
if (gasDetected) {
digitalWrite(relayPin2, HIGH);
delay(500); // Esperamos un momento para asegurarnos de que la alarma se activa correctamente
} else {
digitalWrite(relayPin2, LOW);
}
// Leemos el estado de la fotoresistencia
int ldrValue = analogRead(ldrPin);
// Si la luminosidad es baja, encendemos las luces externas
if (ldrValue < ldrThreshold) {
ldrEnabled = true;
} else {
ldrEnabled = false;
}
// Si las luces externas están apagadas pero deberían estar encendidas, las encendemos
if (ldrEnabled && !digitalRead(relayPin1)) {
digitalWrite(relayPin1, HIGH);
delay(500); // Esperamos un momento para asegurarnos de que las luces se encienden correctamente
}
// Si las luces externas están encendidas pero deberían estar apagadas, las apagamos
if (!ldrEnabled && digitalRead(relayPin2)) {
digitalWrite(relayPin2, LOW);
}
// Imprimimos el estado de los componentes por la comunicación serial (opcional)
Serial.print("Motion detected: ");
Serial.print(motionDetected);
Serial.print(" | Gas detected: ");
Serial.print(gasDetected);
Serial.print(" | LDR value: ");
Serial.print(ldrValue);
Serial.print(" | LDR enabled: ");
Serial.println(ldrEnabled);
}