delayMicroseconds is a busy-wait loop, so is relatively precise (to within a few instruction's execution time.
However, interrupts can happen during that sleep, and the time spent handling interrupts won't be accounted for properly.
It isn't a real real-time system, but for a project like this, it'll be good enough.
Most instructions for ATmega and ATtiny execute in 1 clock cycle so writing deterministic, time-critical code is straightforward.
delayMicroseconds is a busy-wait loop, so is relatively precise (to within a few instruction's execution time.
However, interrupts can happen during that sleep, and the time spent handling interrupts won't be accounted for properly.
It isn't a real real-time system, but for a project like this, it'll be good enough.