I need help with interrupts

Hi, I've writen down a code for a sumo bot, and I'm having problems with an interrupt that I use to activate when my ultrasonic sensor see something closer than 100cm, the problem is that the interrupts is working as soon as I start the arduino, and then it stops, could someone see my code and tell me my mistake?

#include <Servo.h> 
 
Servo Derecho;
Servo Izquierdo;

#define NivelSDD 580
#define NivelSDI 750
#define NivelSAD 500
#define NivelSAI 830

#define trig 5
#define echo 7
#define Vdd 8
#define enemigo 2

#define DD A2
#define DI A0
#define AD A3
#define AI A1


int Negro;
int Verde;
int Amarillo;
int Blanco;
int enLaMira;
int estado;

void setup() 
{
  Serial.begin(9600);
  Derecho.attach(11);
  Izquierdo.attach(9); 
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(Vdd,OUTPUT);
  attachInterrupt(0, objetivo, CHANGE);
  pinMode(4,OUTPUT);  
}  
 
void loop() 
{
  digitalWrite(Vdd, HIGH);
  Negro = analogRead(DD);
  Verde = analogRead(DI);
  Blanco = analogRead(AI);
  Amarillo = analogRead(AD);

//Serial.println(Negro,DEC);
if ((Negro > NivelSDD)&&(Verde>NivelSDI)&&(Amarillo>NivelSAD)&&(Blanco>NivelSAI)){
   Derecho.write(180);
   Izquierdo.write(0);
}
else if (Negro <= NivelSDD) {
  Derecho.write(90);
  Izquierdo.write(90);
  delay(50);

  Derecho.write(0);
  Izquierdo.write(180);
  delay(800);
  Derecho.write(180);
  Izquierdo.write(180);

  delay(1000);

  Derecho.write(180);
  Izquierdo.write(0); 
}
else if (Verde <= NivelSDI){

  Derecho.write(90);
  Izquierdo.write(90);
  delay(50);
  Derecho.write(0);
  Izquierdo.write(180);
  delay(800);
  Derecho.write(0);
  Izquierdo.write(0);
  delay(1000);
  Derecho.write(180);
  Izquierdo.write(0); 
}
else if (Amarillo <= NivelSAD){

  Derecho.write(180);
  Izquierdo.write(0);
}
else if (Blanco <= NivelSAI){

  Derecho.write(180);
  Izquierdo.write(0);
}
}




void objetivo() {
  digitalWrite(Vdd,HIGH);
  int duration, distance;
  digitalWrite(trig, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig, LOW);
  duration = pulseIn(echo, HIGH);
  distance = (duration/2) / 29.1;
    if (distance < 100)
    {
      digitalWrite(4,!estado);
      Serial.print("se disparo la interrupcion");
      Derecho.write(180);
      Izquierdo.write(0);
      
    } 
  }

Don't do a Serial.print inside an interrupt routine.

Your code is probably freezing because of this:

You can't call delay from within the ISR - the millisecond advancement it uses depends on timer0 interrupts which are disabled while inside your ISR.

http://arduino.cc/forum/index.php/topic,44250.0.html

What is connected to pin 2 that is supposed to trigger the (poorly written) interrupt handler?

You haven't declared that pin 2 is an INPUT pin. Therefore, pin 2 is probably floating. Attaching a CHANGE interrupt handler to a floating pin is not really a good idea.

Reading the ping sensor is NOT something that should happen in an interrupt handler.