Отрывок кода: Код (Text): digitalWrite(PinTrig, 1); // Подаем сигнал на выход микроконтроллера delayMicroseconds(10); // Удерживаем 10 микросекунд digitalWrite(PinTrig, 0); // Затем убираем time_us=pulseIn(PinEcho, 1); // Замеряем длину импульса distance_sm=time_us/58; // Пересчитываем в сантиметры Кто работал с HC-SR04 наверняка понял что к чему. К сожалению delayMicroseconds(10); тормозит 1 мой другой модуль. Подскажите пожалуйста как избавиться в моем примере от этого delay.
10 мкс вроде не то время, которое может что-то реально затормозить. Что за другой модуль, которому 10 мкс критично?
IR не всегда корректно работает с delayMicroseconds(10); Вчера проводил эксперимент удалил delayMicroseconds(10); после IR стал работать отлично.
Не исключено, что одномоментное использование этих устройств проблематично. Т.е. нужно использовать строго по очереди. Но для начала нужно попытаться заменить delayMicroseconds на цикл задержки. Только следует помнить, что компилятор оптимизирующий, поэтому пустые циклы он вырезает. Ну и вообще, незачем измерять расстояние каждую свободную микросекунду. Вероятно из-за слишком частого измерения и возникает конфликт. Измеряйте расстояние 2-3 раза в секунду, возможно, этого будет вполне достаточно.