AlexCrane писал(а): 02 окт 2018, 15:11функция pulseIn тормозит loop до сигнала или тайм аута?
Ув.[ref]AlexCrane[/ref], я ни в коем случае не программист, и использую в своих примитивных заключениях доступные источники, в данном случае
этот. Кроме того, я лучше ориентируюсь в схемах, чем в словесных описаниях. Потому, все ещё надеясь, что правильно понял, как работает HC-SR04 уверен , что алгоритм ТС в сообщении №5 не совсем удачный, так как по моей же, может ошибочной, интерпретации алгоритма работы HC-SR04, для опроса 8-ми датчиков необходимо слишком много времени, за которое движущийся объект поменяет дислокацию. К тому-же ТС не учитывает диаграмму направленности HC-SR04 (30 градусов) и "мертвые" зоны. А на счёт, Вашего вопроса, наверное "тормозит" на мизерное время движения ультразвука к объекту и обратно в данном случае, так как излучатель активируется (8 импульсов) до запуска функции pulseIn(pin, value, timeout) и второй пойманный приемником отклик должен прекратить её (timeout ожидания уровня value на pin). Это если отклика нет, то таймаут будет в 1сек и соответствено тормозить будет на это же время. В данном случае идёт речь о паузах между измерениями или суммарно(delayMicroseconds(10)+timeout+100мсек)х 8 датчиков. Ну как-то так.
P.S. нашёл альтернативу штатному блоку вот
здесь. Попробую сделать блок на 5 датчиков из
демо-примера, так как Меги у меня нет и мультиплексора тоже.
Пробуйте: Ардуино-библиотека, [spoiler title=Пользовательский Блок на 5 датчиков,]
MultiSonar5beta(CODE).ubi
[/spoiler] [spoiler title= результаты теста демо проекта,]
MultiSonarTest.png
[/spoiler]номера пинов подключения датчиков указываются в параметрах пользователя, есть вывод в монитор порта (скорость- 115200), дистанция до 3-х метров (такое ТЗ в 5-м сообщении). Испытывал на 2-х датчиках и Nano328p. Результат работы меня не впечатлил, потому не оптимизировал код, не делал описания, нужны фильтры значений. Если подойдёт для Ваших задач,- доделаю как Вам нужно. Удачи!