#define RELE_1 25 // Pin del relé para la lámpara 1
#define RELE_2 26 // Pin del relé para la lámpara 2
#define RELE_3 27 // Pin del relé para la lámpara 3
#define RELE_4 32 // Pin del relé para la lámpara 4
#define PIR_PIN 21 // Pin del sensor PIR
#define LDR_PIN 34 // Pin analógico conectado al LDR
#define BOTON_PIN 23 // Pin del pulsador
#define SWITCH_PIN 22 // Pin del switch SPST
unsigned long Delay = 5000; // Tiempo que la lámpara se mantendrá encendida después de detectar movimiento
unsigned long ultimoestado = 0; // Último tiempo de movimiento detectado
bool estadodelalampara = LOW; // Estado de la lámpara 3
void setup() {
Serial.begin(115200); // Iniciar la comunicación serial
pinMode(RELE_1, OUTPUT);
pinMode(RELE_2, OUTPUT);
pinMode(RELE_3, OUTPUT);
pinMode(RELE_4, OUTPUT);
pinMode(PIR_PIN, INPUT);
pinMode(BOTON_PIN, INPUT_PULLUP);
pinMode(SWITCH_PIN, INPUT_PULLUP);
pinMode(LDR_PIN, INPUT);
digitalWrite(RELE_1, LOW);
digitalWrite(RELE_2, LOW);
digitalWrite(RELE_3, LOW);
digitalWrite(RELE_4, LOW);
}
void loop() {
// Control de la lámpara 1 con pulsador
if (digitalRead(BOTON_PIN) == LOW) {
digitalWrite(RELE_1, !digitalRead(RELE_1));
delay(200);
}
// Control de la lámpara 2 con switch SPST
if (digitalRead(SWITCH_PIN) == LOW) {
digitalWrite(RELE_2, HIGH);
} else {
digitalWrite(RELE_2, LOW);
}
// Control de la lámpara 3 con sensor PIR
if (digitalRead(PIR_PIN) == HIGH) {
ultimoestado = millis(); // Actualiza el tiempo de movimiento
estadodelalampara = HIGH; // Mantiene la lámpara encendida
}
// Desactiva la lámpara si no hay movimiento después del tiempo de retardo
if (millis() - ultimoestado > Delay) {
estadodelalampara = LOW;
}
digitalWrite(RELE_3, estadodelalampara); // Actualiza el estado del relé
// Control de la lámpara 4 con sensor LDR
int ldrValor = analogRead(LDR_PIN); // Lee el valor del LDR
if (ldrValor < 512) { // Umbral ajustable
digitalWrite(RELE_4, HIGH); // Activa la lámpara
} else {
digitalWrite(RELE_4, LOW); // Desactiva la lámpara
}
}