IRRemote Error with Buzzer. Need solution. Thanks!!!

When I use Buzzer and IR in same sketch impossible, error:

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.

Solution please? thanks!

My code:

#include <IRremote.h>
#include <IRremoteInt.h>
/////////////////////// UNAI //////////////////////////

int receptor = 7;
IRrecv irrecv(receptor);
decode_results codigo;
/////////////////////////MIC///////////////////////////
int MIC = 6;
int VALOR;
int ESTADO;
 ////////////////////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() {
  pinMode(MIC, INPUT);

   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);

    //////////IR///////
    Serial.begin(9600);
  irrecv.enableIRIn(); // INICIA LA RECEPCIÓN
  /////////////////////////////////////
    
  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);    // 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() {
  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        
  }

  VALOR = digitalRead(MIC);
  Serial.print (ESTADO);
  if (VALOR == HIGH){
  do {
   // 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(9,0);
  lcd.print ("SOUND  ");
  lcd.setCursor(0,1);
  lcd.print ("Press 0 to STOP ");
}while (distancia >= 1);
}
delay (100);
}

Thanks!

Maybe this alternative Tone library will help to solve the conflict with timer 0 being used by the 2 libraries.

Thanks. I wanted you to help me also to change the delay for something else. What can I do to not stop my program? Because of the delay works very slowly. I need help. Thank you. Sorry about the bad english.