Robot que detecte un objeto y lo saque de una linea

¡Un saludo!
Necesito ayuda con mi proyecto, tengo que programar un carro que se encuentre dentro de un circulo, el carro buscara un objeto a travez de un sensor ultrasonico, mientras que su movimiento dependera del valor obtenido por dos seguidores de linea.
Cuando localice un objeto este lo empujara hasta sacarlo de la linea y seguirá buscando más objetos.

A continuación anexo mi codigo para que me puedan apoyar:

int IN1=5;
int IN2=6;
int ENA =7;
int IN3=4;
int IN4=3;
int ENB=2;
int valor;
int valor2;
int si=A2;
int si2=10;
int TRIGGER=8;
int ECHOP=9;
void setup() {
Serial.begin(9600);
pinMode(si, INPUT);
pinMode(si2, INPUT);
pinMode(TRIGGER,OUTPUT);
pinMode(ECHOP,INPUT );
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(ENB, OUTPUT);
}

void loop() {
valor=digitalRead(si);
Serial.println(valor);
delay(1);
valor2=digitalRead(si2);
Serial.println(valor2);
delay(1);
digitalWrite(ENA, 80);
digitalWrite(ENB, 80);

digitalWrite(TRIGGER, HIGH);
delay(2);
digitalWrite(TRIGGER, LOW);
long duration= pulseIn (ECHOP, HIGH);
int distance= (duration/2)/29.1;

if(distance<=30)
{
if(valor2=1)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
}
if(valor=1)
{
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
else{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}

}
}

Por favor lee las Normas del foro y edita tu código usando etiquetas </>
Al leer las normas entenderas de qué hablo.