Chiken:
- operating the sensor by itself, the sensor performs fastest with a delay of 100ms on the end of the sensing procedure
Bad move when you're trying to drive and sense at the same time.
You can instead set up some variables and fill loop() with task blocks in priority order. When a secondary task runs, unless it is very short it should have a return at the end to run the priority task ASAP.
--a block that checks the sensor every 100ms, code to able to schedule multiple countdowns.
--the next most important block, if it executes, it returns when it's done and loop() runs again
--ditto as needed
it's simple, it can do simple things in simple ways but it is to spaghetti code what macaroni pasta is to spaghetti pasta. It breaks it up.
Besides, it's easy to write.
You need to do more/better; look into the finite state machine mentioned in Majenko's Reply #2 here:
http://arduino.cc/forum/index.php/topic,120827.0.html