Arduino promotes a lot of bad practice in my opinion. DelayMicroseconds() burns away time without making it available to other processes. Arduino does not have "threads". Fine for simple things but unsuitable for more complex things.
There is chThdSleepMicroseconds but this is not the right approach. To get more or less deterministic timing at microsecond level it 'd require to use the highest priority level.
The right way to do it, is to use a hardware timer to produce the start trigger pulse and measure the incoming pulse length, without using any processor cycles for the time measurement. But these sort of tricks are hard to abstract from the underlying hardware, the full documentation of all the timers spans over 180 pages in the processor reference manual.
Anyway, those sharp IR distance sensors are way better than ultrasonic distance sensors, the ultrasonic sensor will have a slow update rate, and likely disturbed by nearby sound sources.