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
}