Cual tarjeta Arduino estas utilizando?
Puedes usar la funciones de interupcion
http://arduino.cc/en/Reference/AttachInterrupt . Esas funciones te permiten hacer de manera que, cuando uno de tus captores cambia de estado, se activa una funcion pre determinada.
Con los arduinos duemilanove, puedes usar 2 interrupciones. Con las megas, puedes usar haasta 6.
A parte de eso, lo que puedes hacer es, en vez de escribir
while (l < 50){//condición que limita los 50 pasos
Porque efectivamente, estat_interrup_ed no cambia, puedes escribir lo siguiente
estat_interrup_ed = digitalRead(interrup_ed);
while (l < 50 && estat_interrup_ed != HIGH)
{}
if (l >50)
{return}//Volver al programa principal, porque se cumpliron los 50 pasos
if (estat_interrup_ed == HIGH)
{}//Accion en caso de choco con un objecto.
Suerte!