// Define los pines para el sensor PIR, el LED, el buzzer, el interruptor y el sensor de ultrasonido
int pirPin = 13; // Pin PIR de movimiento
int ledPin = 17; // Led para la Alarma visual
int buzzer_pin = 18; // BUZZER (Alarma Sonora)
int switch_pin = 14; // Interruptor para activar el sistema
int ledSistema = 12; // Led que enciende si el sistema esta activado
int trigPin = 2; // Pin TRIG del sensor de ultrasonido
int echoPin = 4; // Pin ECHO del sensor de ultrasonido
long distanciaUmbral = 50; // Umbral de distancia en cm para el ultrasonido
void setup() {
// Configura los pines
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzer_pin, OUTPUT);
pinMode(switch_pin, INPUT_PULLUP);
pinMode(ledSistema, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(115200);
}
long medirDistancia() {
// Enviar pulso de disparo
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Leer el tiempo de duración del eco
long duracion = pulseIn(echoPin, HIGH);
long distancia = duracion * 0.034 / 2; // Convertir a cm
return distancia;
}
void loop() {
// Lee el estado del sensor PIR, el interruptor y la distancia del ultrasonido
int pirValue = digitalRead(pirPin);
int switchValue = digitalRead(switch_pin);
long distancia = medirDistancia();
// Verifica si el interruptor está encendido
if (switchValue == HIGH) { // HIGH significa que el sistema está activado
Serial.println("SISTEMA PRENDIDO...");
digitalWrite(ledSistema, HIGH);
// Verifica si se detecta movimiento o si la distancia es menor al umbral
if (pirValue == HIGH || distancia < distanciaUmbral) {
digitalWrite(ledPin, HIGH); // Enciende el LED de alarma
tone(buzzer_pin, 1000); // Activa el buzzer con un tono de 1000 Hz
Serial.println("🚨 Alarma activada!");
if (pirValue == HIGH) Serial.println("Movimiento detectado por PIR...");
if (distancia < distanciaUmbral) {
Serial.print("Objeto detectado a ");
Serial.print(distancia);
Serial.println(" cm por ultrasonido...");
}
delay(1000); // Mantiene el LED y el buzzer encendidos durante 1 segundo
digitalWrite(ledPin, LOW); // Apaga el LED después del delay
} else {
digitalWrite(ledPin, LOW); // Apaga el LED si no hay movimiento ni proximidad
noTone(buzzer_pin); // Apaga el buzzer
Serial.println("✅ No se detecta movimiento ni proximidad...");
}
} else {
Serial.println("SISTEMA APAGADO...");
digitalWrite(ledSistema, LOW);
// Si el interruptor está apagado, asegura que la alarma esté desactivada
digitalWrite(ledPin, LOW);
noTone(buzzer_pin);
}
Serial.println("---------------------------");
delay(1000);
}Led del Sistema.
Alarma visual.
Alarma sonora.
Interruptor del Sistema
Sensor Ultrasonido
Sensor PIR