Hola.
Bueno, lo del 5000 es lo de menos. Aún no he calculado que sea 5 o 3 seg, lo que tarda en dar la vuelta. Quiero decir, que el problema viene en que la funcion vuelta() deja de ejecutarse cuando la condicion de arriba deja de cumplirse.
Es decir, si la funcion de vuelta tarda 5 seg en ejecutarse completa, pero entre tanto, detecta que la distancia del sensor es de mas de 5cm, dejará de ejecutarse, y ejecutará la otra condición, la funcion adelante();