Уважаемый
vfear!
vfear писал(а): ↑05.03.2020{, 21:37}
что может быть?
Разрешите Вам предложить потратить минуту
на прочтение данного материала. Если Вы внимательно прочитаете и вникнете, то все вопросы снимутся.
vfear писал(а): ↑05.03.2020{, 21:37}
зачем вообще нужен этот таймаут?
Просто приход импульса не совпадает по времени с вызовом функции в основном цикле (не сихронизован), потому приходится его подождать. Потому вставляеете значение таймаута как максимальное предполагаемое время полного периода сигнала (для случая, если импульс прийдёт чуть раньше вызова функции),- это и будет задержка цикла при отсутствии сигнала.
- Замените значение timeOut своим
Обратите внимание, что функция возвращает значение в микросекундах 1000 мкс == 1 мс и таймаут тоже в мкс. У Вас наверное всё-таки 1100...1900 мкс? Иначе Вы не могли получить стабильно правильный результат при таймауте 1 сек == 1 000 000 мкс== 1000мс. по умолчанию.
Да, ещё непонятно с pinMode(pin,INPUT_PULLUP). У Вас получается рабочий уровень сигнала- LOW (учитывая подтяжку), тогда ф-я должна выглядеть как pulseIn(Pin_1_ch, LOW), иначе Вы подсчитываете не длительность импульса, а длительность паузы?
Задержку delay(20) в каждом цикле в любом случае считаю лишней, а вот
- Смотреть в обоих блоках UART
нужно сделать не в каждом цикле, а только при изменении значения (при усреднении), или периодически, к примеру раз в секунду и т.п. "Бомбёжка" ком порта в каждом цикле- реально тормозит выполнение кода. К тому же Вы два раза за цикл отправляете данные в монитор порта: переменную steer, которая константа 0, и speed (см. нумерацию блоков на плате).
Note: Предполагаю, что Вы не смогли разобраться в
той теме с вопросом:
vfear писал(а): ↑27.08.2019{, 18:53}
Еще, будет ли разница в моем случае если прописать просто INPUT, а не INPUT_PULLUP ?
Так как мне не известен способ формирования активного уровня приемником (переключение выхода- подтяжка не нужна, или отключение выхода- подтяжка необходима, а PULLDOWN или PULLUP зависит от активного уровня HIGH или LOW соответственно) косвенно смею предположить по неинвертирующему буферу- 74HC244 драйвера BTS7960, что подтяжка не нужна.
Удачи!