FUNCIÓN PARAR ALARMA CON MANDO IR! COMO LO AÑADO?

Buenas tardes a todos. Soy Unai y estoy empezando a practicar con Arduino por primera vez. Estoy haciendo una alarma que consiste en que cuando detecta el sensor ultrasonidos algo a menos de 20cm salta la alarma y una vez que ha saltado no para hasta que lo desconecto o pulso RESET en la placa.

Lo que quiero hacer es poder parar la alarma cuando pulso un botón del mando pero no sé que cosas debo añadir. Probé cosas pero daban error. Podeis ayudame por favor? Gracias.

////////////////////Temp & Humed///////////////////////
#include <DHT.h>    
#include <DHT_U.h>

int SENSOR = 12;      
int TEMPERATURA;
int HUMEDAD;

DHT dht(SENSOR, DHT11);   

 //////////////////////////LCD//////////////////////////

#include <Wire.h>                 
#include <LCD.h>                  
#include <LiquidCrystal_I2C.h>    

#define I2C_ADDR          0x27        
#define BACKLIGHT_PIN      3
#define En_pin             2
#define Rw_pin             1
#define Rs_pin             0
#define D4_pin             4
#define D5_pin             5
#define D6_pin             6
#define D7_pin             7           

LiquidCrystal_I2C      lcd(I2C_ADDR, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); // START LCD

//////////////////////////SOUND/////////////////////////

int duration=250; 
int fMin=2000; 
int fMax=3250; 
int i=0;

//////////////////////////LED//////////////////////////
int led0 = 0;
int led1 = 2;
int led2 = 4;

//////////////////////////ULTRASONIC///////////////////

#define Pecho 9
#define Ptrig 8
long duracion, distancia;

//////////////////////////////////////////////////////

void setup() {

  Serial.begin(9600);   // TEMP Y HUMED SENSOR
  dht.begin();

  //Define the LCD as 16 column by 2 rows 
    lcd.begin (16,2);
    
    //Switch on the backlight
    lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
    lcd.setBacklight(HIGH);
    
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
 
  
  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led0,LOW);

  
  Serial.begin (9600);      // inicializa el puerto serial a 9600 baudios
  pinMode(Pecho, INPUT);    // define el pin 6 como entrada (echo)
  pinMode(Ptrig, OUTPUT);   // define el pin 7 como salida  (triger)
  pinMode(13,1);            // define el pin 13 como salida
  }

void loop() {
  
  digitalWrite(Ptrig, LOW);
  delayMicroseconds(2);
  digitalWrite(Ptrig, HIGH); //  genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(Ptrig, LOW);

  duracion = pulseIn(Pecho, HIGH);
  distancia = (duracion/2) / 29;    // calcula la distancia en centimetros

  if (distancia >= 500 || distancia <= 0){  //  si la distancia en mayor a 500cm o menor a 0cm
    
    
  
  }
  else {
    digitalWrite(led0,HIGH);
    lcd.setCursor(0,0);
    lcd.print ("Hello Status: OK");
    
    lcd.setCursor(0,1);
    lcd.print(distancia);
    lcd.print(" CM ");
    
    Serial.print(distancia);                //  envia el valor de la distancia por el puerto serial
    Serial.println("cm");                   // le coloca a la distancia los centimetros "cm"
    digitalWrite(13,0);                     // en bajo el pin 13

  TEMPERATURA = dht.readTemperature();  // obtencion de valor de temperatura
  HUMEDAD = dht.readHumidity();   // obtencion de valor de humedad
  Serial.print("Temperatura: ");  // escritura en monitor serial de los valores
  Serial.print(TEMPERATURA);
  Serial.print(" Humedad: ");
  Serial.print(HUMEDAD);

  lcd.setCursor(7,1);
  lcd.print(TEMPERATURA);
  lcd.print ("C ");

  lcd.setCursor(12,1);
  lcd.print(HUMEDAD);
  lcd.print("%h");
    }

  if (distancia <= 20 && distancia >= 1){ 
    [b]do{
   
   digitalWrite(13, 1); // enciende el pin 13 
   digitalWrite(led0,LOW);
   
   // enciende buzzer alarma 
   for (i=fMax;i>=fMin; i--)
   tone(13, i, duration);
 

  //hace saltar luces de alarma
  digitalWrite(led1,HIGH);
  delay(75);
  digitalWrite(led1,LOW);
  delay(75);
  digitalWrite(led2,HIGH);
  delay(75);
  digitalWrite(led2,LOW);
  delay(75);
    
    
    
  Serial.println("WARNING!.......");
  
  lcd.setCursor(0,0);
  lcd.print ("WARNING!    "); delay(50);
  lcd.setCursor(11,0);
  lcd.print ( distancia);
  lcd.print (" CM ");
  lcd.setCursor(0,1);
  lcd.print ("Press 0 to STOP ");
  }while(distancia >= 1);[u][b]ESTA PUESTO PARA QUE SE REPITA TODO EL RATO PERO QUIERO QUE SEA DISTANCIA MAYOR QUE 0 pero HASTA QUE SE PULSE un botón del mando para parar.[/b][/u]
  delay(100); // Indica que se ha encendido la alarma por el puerto serial        
  }
}

He modificado mi duda. Ahora espero que alguien me ayude. Gracias y perdón.

okay ya lo modificaste y ahora las respuestas nuestras quedan fuera de lugar.
Para la proxima sigue la secuencia del hilo y tranquilamente podrías haber explicado en un post nuevo.

Prueba este código.
He puesto un pulsador en el pin 5 entre GND y pin.
Quita el led conectado a pin 0 y reubícalo en otro pin al menos mientras trabajes con Serial.print()

////////////////////Temp & Humed///////////////////////
#include <DHT.h>    
#include <DHT_U.h>

int SENSOR = 12;      
int TEMPERATURA;
int HUMEDAD;

DHT dht(SENSOR, DHT11);   

 //////////////////////////LCD//////////////////////////

#include <Wire.h>                 
#include <LCD.h>                  
#include <LiquidCrystal_I2C.h>    

#define I2C_ADDR          0x27        
#define BACKLIGHT_PIN      3
#define En_pin             2
#define Rw_pin             1
#define Rs_pin             0
#define D4_pin             4
#define D5_pin             5
#define D6_pin             6
#define D7_pin             7           

LiquidCrystal_I2C      lcd(I2C_ADDR, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); // START LCD

//////////////////////////SOUND/////////////////////////

int duration=250; 
int fMin=2000; 
int fMax=3250; 
int i=0;

//////////////////////////LED//////////////////////////
const byte led0  = 0;   // <= cambia esta ubicación si usas el puerto serie como Monitor
const byte led1  = 2;
const byte led2  = 4;
const byte boton = 5;

//////////////////////////ULTRASONIC///////////////////

#define Pecho 9
#define Ptrig 8
long duracion, distancia;
bool status, statusAnt;

//////////////////////////////////////////////////////

void setup() {

  Serial.begin(9600);   // TEMP Y HUMED SENSOR
  dht.begin();

  //Define the LCD as 16 column by 2 rows 
  lcd.begin (16,2);

  //Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(boton,INPUT_PULLUP);   // pulsador conectado solo entre gnd y pin.

  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led0,LOW);

  Serial.begin (9600);      // inicializa el puerto serial a 9600 baudios
  pinMode(Pecho, INPUT);    // define el pin 6 como entrada (echo)
  pinMode(Ptrig, OUTPUT);   // define el pin 7 como salida  (triger)
  pinMode(13,1);            // define el pin 13 como salida
}

void loop() {
  


  distancia = ultrasonico();


  if (distancia < 500 && distancia > 0){  //  si la distancia esta entre 0 y 500
    digitalWrite(led0,HIGH);
    lcd.setCursor(0,0);
    lcd.print ("Hello Status: OK");
    
    lcd.setCursor(0,1);
    lcd.print(distancia);
    lcd.print(" CM ");
    
    Serial.print(distancia);                //  envia el valor de la distancia por el puerto serial
    Serial.println("cm");                   // le coloca a la distancia los centimetros "cm"
    digitalWrite(13,0);                     // en bajo el pin 13

    TEMPERATURA = dht.readTemperature();  // obtencion de valor de temperatura
    HUMEDAD = dht.readHumidity();   // obtencion de valor de humedad
    Serial.print("Temperatura: ");  // escritura en monitor serial de los valores
    Serial.print(TEMPERATURA);
    Serial.print(" Humedad: ");
    Serial.print(HUMEDAD);

    lcd.setCursor(7,1);
    lcd.print(TEMPERATURA);
    lcd.print ("C ");

    lcd.setCursor(12,1);
    lcd.print(HUMEDAD);
    lcd.print("%h");
  }

  if (distancia <= 20 && distancia >= 1){ 
      do {
          status = digitalRead(boton);  // cuadno se presiona tenemos un LOW
          
          digitalWrite(13, 1); // enciende el pin 13 
          digitalWrite(led0,LOW);

          // enciende buzzer alarma 
          for (i=fMax;i>=fMin; i--)
          tone(13, i, duration);

          //hace saltar luces de alarma
          digitalWrite(led1,HIGH);
          delay(75);
          digitalWrite(led1,LOW);
          delay(75);
          digitalWrite(led2,HIGH);
          delay(75);
          digitalWrite(led2,LOW);
          delay(75);

          Serial.println("WARNING!.......");

          lcd.setCursor(0,0);
          lcd.print ("WARNING!    "); delay(50);
          lcd.setCursor(11,0);
          lcd.print ( distancia);
          lcd.print (" CM ");
          lcd.setCursor(0,1);
          lcd.print ("Press 0 to STOP ");
  } while (status);
  
  delay(100); // Indica que se ha encendido la alarma por el puerto serial        
  }
}
  
    
long ultrasonico() {
  digitalWrite(Ptrig, LOW);
  delayMicroseconds(2);
  digitalWrite(Ptrig, HIGH); //  genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(Ptrig, LOW);

  duracion = pulseIn(Pecho, HIGH);
  return (duracion/2) / 29;    // calcula la distancia en centimetros
}

Si, lo he probado, pero quiero esto con el mando a distancia y nunca lo consigo por que me saltan diversos errrores. Es que hasta que no detecte el código FF02FD de mi mando no pare la alarma pero no consigo hacerlo! Te agradecería tu ayuda.

Ahh pero yo pense que era un pulsador y ahora sales con un comando IR.

Pues es facil y claro dificil para ti que no tienes ritmo programando pero ya lo vas a encontrar.

Mira el código IRremote.h done reconozca tu comando.

Colocalo aqui. Y luego lo sumamos a tu programa.

Gracias por ayudarme. Mira primero quiero hacer que pulsando el botón OK del mando me muestre “hola”, (he probado esto en un sketch solo y si funciona)he añadido el código pero me muestra errores. Te paso todo:
(Luego lo que quiero hacer es que la alarma no pare hasta pulsar otro botón del mando).

Errores:

Arduino:1.8.3 (Windows 7), Tarjeta:"Arduino/Genuino Uno"

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.

Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

Código:

#include <IRremote.h>
int receptor = 7;
IRrecv irrecv(receptor);
decode_results codigo;
 ////////////////////Temp & Humed///////////////////////
#include <DHT.h>    
#include <DHT_U.h>

int SENSOR = 12;      
int TEMPERATURA;
int HUMEDAD;

DHT dht(SENSOR, DHT11);   

 //////////////////////////LCD//////////////////////////

#include <Wire.h>                 
#include <LCD.h>                  
#include <LiquidCrystal_I2C.h>    

#define I2C_ADDR          0x27        
#define BACKLIGHT_PIN      3
#define En_pin             2
#define Rw_pin             1
#define Rs_pin             0
#define D4_pin             4
#define D5_pin             5
#define D6_pin             6
#define D7_pin             7           

LiquidCrystal_I2C      lcd(I2C_ADDR, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); // START LCD

//////////////////////////SOUND/////////////////////////

int duration=250; 
int fMin=2000; 
int fMax=3250; 
int i=0;

//////////////////////////LED//////////////////////////
int led1 = 2;
int led2 = 4;

//////////////////////////ULTRASONIC///////////////////

#define Pecho 9
#define Ptrig 8
long duracion, distancia;

//////////////////////////////////////////////////////

void setup() {

  Serial.begin(9600);
  irrecv.enableIRIn();
  

  Serial.begin(9600);   // TEMP Y HUMED SENSOR
  dht.begin();

  //Define the LCD as 16 column by 2 rows 
    lcd.begin (16,2);
    
    //Switch on the backlight
    lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
    lcd.setBacklight(HIGH);
    
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
 
  
  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);

  
  Serial.begin (9600);      // inicializa el puerto serial a 9600 baudios
  pinMode(Pecho, INPUT);    
  pinMode(Ptrig, OUTPUT);   
  pinMode(13,1);            // define el pin 13 como salida
  }

void loop() {
  {
 if (irrecv.decode(&codigo))
 {
Serial.println(codigo.value, HEX);

      if (codigo.value==0xFF02FD)//CÓDIGO DEL NÚMERO CERO PARA ACTIVAR LED
      {
         lcd.setCursor(0,0);
         lcd.print("HOLA");
      }
 }
  
  digitalWrite(Ptrig, LOW);
  delayMicroseconds(2);
  digitalWrite(Ptrig, HIGH); //  genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(Ptrig, LOW);

  duracion = pulseIn(Pecho, HIGH);
  distancia = (duracion/2) / 29;    // calcula la distancia en centimetros

  if (distancia >= 500 || distancia <= 0){  //  si la distancia en mayor a 500cm o menor a 0cm
    
    
  
  }
  else {
    lcd.setCursor(0,0);
    lcd.print ("Hello Status: OK");
    
    lcd.setCursor(0,1);
    lcd.print(distancia);
    lcd.print(" CM ");
    
    Serial.print(distancia);                //  envia el valor de la distancia por el puerto serial
    Serial.println("cm");                   // le coloca a la distancia los centimetros "cm"
    digitalWrite(13,0);                     // en bajo el pin 13

  TEMPERATURA = dht.readTemperature();  // obtencion de valor de temperatura
  HUMEDAD = dht.readHumidity();   // obtencion de valor de humedad
  Serial.print("Temperatura: ");  // escritura en monitor serial de los valores
  Serial.print(TEMPERATURA);
  Serial.print(" Humedad: ");
  Serial.print(HUMEDAD);

  lcd.setCursor(7,1);
  lcd.print(TEMPERATURA);
  lcd.print ("C ");

  lcd.setCursor(12,1);
  lcd.print(HUMEDAD);
  lcd.print("%h");
    }

  if (distancia <= 20 && distancia >= 1){ 
    do{
   
   digitalWrite(13, 1); // enciende el pin 13 
   
   // enciende buzzer alarma 
   for (i=fMax;i>=fMin; i--)
   tone(13, i, duration);
 

  //hace saltar luces de alarma
  digitalWrite(led1,HIGH);
  delay(75);
  digitalWrite(led1,LOW);
  delay(75);
  digitalWrite(led2,HIGH);
  delay(75);
  digitalWrite(led2,LOW);
  delay(75);
    
    
    
  Serial.println("WARNING!.......");
  
  lcd.setCursor(0,0);
  lcd.print ("WARNING!    "); delay(50);
  lcd.setCursor(11,0);
  lcd.print ( distancia);
  lcd.print (" CM ");
  lcd.setCursor(0,1);
  lcd.print ("Press 0 to STOP ");
  }while(distancia >= 1);
  delay(100); // Indica que se ha encendido la alarma por el puerto serial        
}
}
}

Te dejo este código reducido de mi proyecto, aquí ya es donde aparece el error, al añadir el buzzer y luces. Puede que esté ahí el fallo o no sé:

int duration=250; 
int fMin=2000; 
int fMax=3250; 
int i=0;

//////////////////////////LED//////////////////////////
int led1 = 2;
int led2 = 4;

/////////////////
#include <Wire.h>                 
#include <LCD.h>                  
#include <LiquidCrystal_I2C.h>    

#define I2C_ADDR          0x27        
#define BACKLIGHT_PIN      3
#define En_pin             2
#define Rw_pin             1
#define Rs_pin             0
#define D4_pin             4
#define D5_pin             5
#define D6_pin             6
#define D7_pin             7           

LiquidCrystal_I2C      lcd(I2C_ADDR, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); // START LCD
////////////////////////////

#include <IRremote.h>
int receptor = 7;
IRrecv irrecv(receptor);
decode_results codigo; //OBJETO CODIGO DE CLASE decode_result, oriundo de IRremote.h
 
void setup()
{

  //////////////
   lcd.begin (16,2);
    
    //Switch on the backlight
    lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
    lcd.setBacklight(HIGH);
    /////////////////////
    
  Serial.begin(9600);
  irrecv.enableIRIn(); // INICIA LA RECEPCIÓN
}
 
void loop()
{
 if (irrecv.decode(&codigo))
 {
Serial.println(codigo.value, HEX);

      if (codigo.value==0xFF02FD)//CÓDIGO DEL NÚMERO CERO PARA ACTIVAR LED
      {
         lcd.setCursor(0,0);
         lcd.print("HOLA");
      }

      if (codigo.value==0xFF629D)//(ESTO SERIA UN BOTÓN DEL MANDO PARA HACER SALTAR LA ALARMA MANUALMENTE) Algo falla con el buzzer en todos los sketch. Cuando añado IR con el buzzer da error. 
      {
         digitalWrite(13, 1); // enciende el pin 13 
   
   // enciende buzzer alarma 
   for (i=fMax;i>=fMin; i--)
   tone(13, i, duration);
 

  //hace saltar luces de alarma
  digitalWrite(led1,HIGH);
  delay(75);
  digitalWrite(led1,LOW);
  delay(75);
  digitalWrite(led2,HIGH);
  delay(75);
  digitalWrite(led2,LOW);
  delay(75);
    
 
  
  lcd.setCursor(0,0);
  lcd.print ("WARNING!    "); 
      }
    
delay(500);
irrecv.resume();

 }
}

Gracias!

Alguien por favor?

Mi estimado @unai280 intenta ser paciente.
La gente tiene vida y nadie tiene obligación por responder.

Tu problema

Arduino:1.8.3 (Windows 7), Tarjeta:"Arduino/Genuino Uno"
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

Esta ahi indicado
La librería IRremote y la librería que usa tone usan TIMER0 y por eso al intentar ambas usar el timer se genera el error.
Comenta tone en tu código y sigue adelante con el resto.

Luego veré la otra parte.

No sé como cambiar los delay ni por que otra cosa puedo sustituirlos. Si he pedido ayuda es por que con Google no es suficiente. Necesito que alguien reescriba mi codigo. EL IR al añadirlo muestra un error junto al buzzer, necesito que lo reviseis. Gracias, espero que me comprendas!

Y cómo lo de delay lo repito cada día ya no sigo más. Sólo lo advierto por si tras X tiempo invirtiendo líneas en tu código vuelves con el mismo proyecto preguntando por qué a veces actúa raro y acabas replanteado todo desde cero.

@ArduMyth tu crees que todo el mundo te lee?

Si la gente no lee las normas del foro como crees que van a leer que no deben usar delay()!

Creo que deberías relajarte con el tema delay y en todo caso, copia una respuesta y la pegas cuando aplique y listo. Asunto delay resuelto!!

Necesito que alguien reescriba mi codigo

Si, no hay problema, quieres que te pasemos un presupuesto?

Como pides eso? El foro es de ayuda y en algunos casos nos tomamos el tiempo de hacerlo pero cuando se pide con respeto.

Cuando se pide del modo que lo has hecho yo simplemente paso.

Comprendo. Disculpadme ambos. Estoy empezando y como me han salido varios errores y no podria seguir me ha fastidiado. Y no entiendo muy bien algunas cosas. No sé que otras opciones hay que no sean delay o bien como aplicarlas a mi trabajo. Lo siento!

He borrado tu post @unai280 y no te lo advertiré de nuevo. Ten paciencia y lee mi privado. Cometes falta tan falta y te enojas con quien lo señala?

Ya que me has escrito que estas muy abrumado, espero que esto te desestrese, y luego ojalá agradezcas, siguiendo las normas y devolviendo a los demas lo que se te dió.
Estudia porque me parece que has dejado la tarea para ultimo momento y todo el mundo ve un tutorial en internet y dice QUE PAVADA!!! y resulta que no es pavada.

Acá tienes…

Hay mas por hacer, has hecho una mezcolansa de cosas que sobre el final no se comprende que va con qué.
Tomé el código que ya te había ordenado con el pulsador que luego mal interpreté y era con el comando IR.

Ahora esta el comando IR pero esto es algo para salir del paso, hay que mejorarlo porque ese for() genera problemas no solo con los delay() que deben desaparecer para que pueda prestar atención al control IR sino para que el código fluya como se espera.

#include <IRremote.h>
int receptor = 7;
IRrecv irrecv(receptor);
decode_results codigo; //OBJETO CODIGO DE CLASE decode_result, oriundo de IRremote.h

////////////////////Temp & Humed///////////////////////
#include <DHT.h>    
#include <DHT_U.h>

int SENSOR = 12;      
int TEMPERATURA;
int HUMEDAD;

DHT dht(SENSOR, DHT11);   

 //////////////////////////LCD//////////////////////////

#include <Wire.h>                 
#include <LCD.h>                  
#include <LiquidCrystal_I2C.h>    

#define I2C_ADDR          0x27        
#define BACKLIGHT_PIN      3
#define En_pin             2
#define Rw_pin             1
#define Rs_pin             0
#define D4_pin             4
#define D5_pin             5
#define D6_pin             6
#define D7_pin             7           

LiquidCrystal_I2C      lcd(I2C_ADDR, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); // START LCD

//////////////////////////SOUND/////////////////////////

int duration=250; 
int fMin=2000; 
int fMax=3250; 
int i=0;

//////////////////////////LED//////////////////////////
const byte led0  = 0;   // <= cambia esta ubicación si usas el puerto serie como Monitor
const byte led1  = 2;
const byte led2  = 4;
const byte boton = 5;

//////////////////////////ULTRASONIC///////////////////

#define Pecho 9
#define Ptrig 8
long duracion, distancia;
bool  status = true;

//////////////////////////////////////////////////////

void setup() {

  Serial.begin(9600);   // TEMP Y HUMED SENSOR
  dht.begin();

  //Define the LCD as 16 column by 2 rows 
  lcd.begin (16,2);

  //Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(boton,INPUT_PULLUP);   // pulsador conectado solo entre gnd y pin.

  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led0,LOW);

  Serial.begin (9600);      // inicializa el puerto serial a 9600 baudios
  pinMode(Pecho, INPUT);    // define el pin 6 como entrada (echo)
  pinMode(Ptrig, OUTPUT);   // define el pin 7 como salida  (triger)
  pinMode(13,1);            // define el pin 13 como salida
  irrecv.enableIRIn(); // INICIA LA RECEPCIÓN
}

void loop() {
  
  distancia = ultrasonico();

  if (distancia < 500 && distancia > 0){  //  si la distancia esta entre 0 y 500
    digitalWrite(led0,HIGH);
    lcd.setCursor(0,0);
    lcd.print ("Hello Status: OK");
    
    lcd.setCursor(0,1);
    lcd.print(distancia);
    lcd.print(" CM ");
    
    Serial.print(distancia);                //  envia el valor de la distancia por el puerto serial
    Serial.println("cm");                   // le coloca a la distancia los centimetros "cm"
    digitalWrite(13,0);                     // en bajo el pin 13

    TEMPERATURA = dht.readTemperature();  // obtencion de valor de temperatura
    HUMEDAD = dht.readHumidity();   // obtencion de valor de humedad
    Serial.print("Temperatura: ");  // escritura en monitor serial de los valores
    Serial.print(TEMPERATURA);
    Serial.print(" Humedad: ");
    Serial.print(HUMEDAD);

    lcd.setCursor(7,1);
    lcd.print(TEMPERATURA);
    lcd.print ("C ");

    lcd.setCursor(12,1);
    lcd.print(HUMEDAD);
    lcd.print("%h");
  }

  if (distancia <= 20 && distancia >= 1){ 
      do {                   
          digitalWrite(13, 1); // enciende el pin 13 
          digitalWrite(led0,LOW);

          // enciende buzzer alarma 
          for (i=fMax;i>=fMin; i--) {
              // tone(13, i, duration);

              //hace saltar luces de alarma
              digitalWrite(led1,HIGH);
              delay(75);
              digitalWrite(led1,LOW);
              delay(75);
              digitalWrite(led2,HIGH);
              delay(75);
              digitalWrite(led2,LOW);
              delay(75);

              Serial.println("WARNING!.......");

              lcd.setCursor(0,0);
              lcd.print ("WARNING!    "); delay(50);
              lcd.setCursor(11,0);
              lcd.print ( distancia);
              lcd.print (" CM ");
              lcd.setCursor(0,1);
              lcd.print ("Press 0 to STOP ");
          }
          if (irrecv.decode(&codigo)) {
              if (codigo.value == 0xFF629D)
                  status = false;
          }
/*
      switch (codigo.value) {
           case 0xFF02FD:  //CÓDIGO DEL NÚMERO CERO PARA ACTIVAR LED
                          lcd.setCursor(0,0);
                          lcd.print("HOLA");
*/

          irrecv.resume();
  } while (status);
  
  delay(100); // Indica que se ha encendido la alarma por el puerto serial        
  }
}
  
    
long ultrasonico() {
  digitalWrite(Ptrig, LOW);
  delayMicroseconds(2);
  digitalWrite(Ptrig, HIGH); //  genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(Ptrig, LOW);

  duracion = pulseIn(Pecho, HIGH);
  return (duracion/2) / 29;    // calcula la distancia en centimetros
}