Это я отвечал как раз по поводу замера длины имульса (PulseIn и др. способы). "Столбики" - это форма сигнала на осциллограмме. Вот чуть выше пост опять про длину импульса...
В какой-то момент "micros_sp" будет 4 миллиарда, а micros() - небольшой и тут как ни крути, а всё равно будут неверные данные и их придется исключить.
И потом, что стоит добавить мелочь в виде "if (micros_sp < micros())" ?
И еще момент - вычисления происходят в функции прерывания, т.е. пока она выполняется другие прерывания ждут. Насколько целесообразно так часто делать лишние вычисления и отбирать микросекунды у других прерываний?
А для системы, где глюк чувствителен, я использую millis(), которая обнуляется за очень большой, как для авто, промежуток времени и вычисляю скорость по сумме импульсов за период, причем в цикле.
Сразу скажу по поводу точности и усреднения - для периода обработки в 100мс и авто "7с от 0 до 100км/ч" отставание составляет менее чем на 2км/ч (в период этого самого разгона), а после 60км/ч - меньше 1км/ч, а после 90км/ч - 0,3км/ч.