alarma con ultrasonido+sensor infrarojo+sirena conectada a 12 v

Hola a todos

Hice un pequeño proyecto para que suene una sirena de 12 v.

La idea es que el sensor infrarrojo avise al dueño de casa cuando hay un intruso ,con un pequeño sonido en un buzzer...si que se de cuenta el intruso...
Posteriormente cuando el intruso intenta entrar... el ultrasonido lo capta de acuerdo a la distancia y se dispara la alarma con una sirena que puede estar conectada a la policía..
Están conectados dos ultrasonidos, que pueden estar en la puerta de entrada y el otro en la puerta trasera

saludos

// Ultrasonic - Library for HR-SC04 Ultrasonic Ranging Module.

#include <Ultrasonic.h>

Ultrasonic ultraleft(9,8);   // (Trig PIN,Echo PIN)
Ultrasonic ultraright(7,6);  // (Trig PIN,Echo PIN)

// sensor
   #define pir A0// sensor en el pin0
   int p=0;
// fin sensor

// sonido sirena chica
     int duracion=250; //Duración del sonido
     int fMin=2500; //Frecuencia más baja que queremos emitir
     int fMax=4000; //Frecuencia más alta que queremos emitir
 //    int pin_tono= 4;// siempre en el pin 4
     int i=0;
     unsigned long tiempo;
// fin sonido sirena


void setup() {
  Serial.begin(9600); 
   pinMode(pir, INPUT);
  pinMode(12, OUTPUT);
  pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT); // siren CHICA

}

void loop()

{

// sensor
   int i = analogRead(pir);
   int l = map(i,0,1023,0,255);
   p=i+l; 
   if (p > 50)
   {
      // do something here
     Serial.print(i);
     Serial.print(" / ");
     Serial.println(l);
  //sonido parlante cuando el sensor se conecta
     tiempo = millis();  
     for(int i = fMin; i <=fMax; i++){
     if(millis()-tiempo <150){
          }
     else if(millis()-tiempo < 300){
          }
     else{
       tiempo=millis();
     }
   tone(4,i,duracion);
   } 
   for(int i = fMax; i >=fMin; i--){ //Esta parte la agregue porque me gusto mas de esta manera.
     if(millis()-tiempo <150){
          }
     else if(millis()-tiempo < 300){
          }
     else{
       tiempo=millis();
     }
    tone(4,i,duracion);
    } 
    noTone(4);
    delay(1000); 
  // fin sonido sirena para el sensor 
  
  }

// fin sensorsensor

  
// ultrasonido  izquierda
if ((ultraleft.Ranging(CM)) <10)// rango sensor
  {
    if ((ultraleft.Ranging(CM))>0)// si es mayor que cero suena la sirena
  {
  //sonido sirena

tiempo = millis();  
for(int i = fMin; i <=fMax; i++){
     if(millis()-tiempo <150){
       digitalWrite(11,HIGH);// luz de sirena
     }
     else if(millis()-tiempo < 300){
       digitalWrite(11,LOW);
     }
     else{
       tiempo=millis();
     }
  tone(12,i,duracion);

} 
for(int i = fMax; i >=fMin; i--){ //Esta parte la agregue porque me gusto mas de esta manera.
     if(millis()-tiempo <150){
       digitalWrite(11,HIGH);
     }
     else if(millis()-tiempo < 300){
       digitalWrite(11,LOW);
     }
     else{
       tiempo=millis();
     }
  tone(12,i,duracion);

} 
noTone(12);
delay(1000); 
  // fin sonido sirena
  
  
  Serial.print(ultraleft.Ranging(CM));
  Serial.print(" izquierda");
  Serial.println();
    
 
  }
  }

  // fin izquierda

  // derecha
if ((ultraright.Ranging(CM)) <10)// rango del sensor
  if ((ultraright.Ranging(CM))>0)// si es mayor que cero se conecta
  {

     //sonido sirena

tiempo = millis();  
for(int i = fMin; i <=fMax; i++){
     if(millis()-tiempo <120){
       digitalWrite(11,HIGH);
     }
     else if(millis()-tiempo < 250){
       digitalWrite(11,LOW);
     }
     else{
       tiempo=millis();
     }
  tone(12,i,duracion);

} 
for(int i = fMax; i >=fMin; i--){ //Esta parte la agregue porque me gusto mas de esta manera.
     if(millis()-tiempo <120){
       digitalWrite(11,HIGH);
     }
     else if(millis()-tiempo < 250){
       digitalWrite(11,LOW);
     }
     else{
       tiempo=millis();
     }
  tone(12,i,duracion);

} 
noTone(12);
delay(1000); 
  // fin sonido sirena
  
  Serial.print(ultraright.Ranging(CM));
  Serial.print(" derecha");
  Serial.println();
 //         digitalWrite(10, HIGH);   // turn the LED on (HIGH is the voltage level)
//    delay(1000);              // wait for a second
//    digitalWrite(10, LOW);    // turn the LED off by making the voltage LOW
//    delay(1000);
  }

  // fin derecha
  }

Parece muy interesante pero no dices cuál es tu duda.

no no hay ninguna duda....

solo era un aporte...pero me acabo de dar cuenta que es a través de un formulario

saludos

GRACIAS POR EL APORTE LO PROBARE