HC-SR04 помогите избавиться от задержки.

Тема в разделе "Arduino & Shields", создана пользователем Dima85, 16 июл 2015.

  1. Dima85

    Dima85 Нерд

    Отрывок кода:
    Код (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.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    10 мкс вроде не то время, которое может что-то реально затормозить.
    Что за другой модуль, которому 10 мкс критично?
     
  3. Dima85

    Dima85 Нерд

    IR не всегда корректно работает с delayMicroseconds(10); Вчера проводил эксперимент удалил delayMicroseconds(10); после IR стал работать отлично.
     
  4. andriano

    andriano Нерд

    Не исключено, что одномоментное использование этих устройств проблематично. Т.е. нужно использовать строго по очереди.
    Но для начала нужно попытаться заменить delayMicroseconds на цикл задержки. Только следует помнить, что компилятор оптимизирующий, поэтому пустые циклы он вырезает.
    Ну и вообще, незачем измерять расстояние каждую свободную микросекунду. Вероятно из-за слишком частого измерения и возникает конфликт. Измеряйте расстояние 2-3 раза в секунду, возможно, этого будет вполне достаточно.