• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Библиотека для ультразвукового датчика HC-SR04

enjoynering

Well-known member
Знаю что баян, но то что есть в интернете меня не устроило. Написал свой велосипед:

- измерение расстояния от 4 см до 250 мм*
- компенсация изменения скорости звука от температуры окружающей среды
- установка максимального расстояния для ускорения измерений

забирать тут - enjoyneering/HCSR04

* - мой экземпляр больше 260см не бьет, меньше 2см начинает выдавать бред от 2см до 3.5см. поэтому минимум 4см.
 

Вложения

enjoynering

Well-known member
так если посмотреть не для чего библиотеки не требуются :) читаешь datasheet и пишешь на чистом Cи.

а не могли вы опробовать мою? просто интересно, будет ли мерить до 400см? не понятно - то ли это мой сенсор, то ли код, то ли pulseIn()?

я посмотрел исходники pulseIn(), он вроде как почти прерывание-безопасный тк считает такты процессора а не millis().
 
Последнее редактирование:

enjoynering

Well-known member
1 - чтоб быстрее было
2 - если вы смотрите в черную дыру то сенсор как бы вам намекает
3 - зачем? если у меня робот за это время 0.5км проедит, а в ячейке он еще в нулевой отметке. имхо лучше опрашивать когда надо и получать 99.9% реальное расстояние.
4 - в гугле забанили? прошу - esp8266/Arduino
 

enjoynering

Well-known member
не всем нужны прерывания и не всегда они полезны, плюс на некоторых платах их всего два и они могут быть заняты например энкодером с кнопкой. поэтому pulseIn() имеет право на жизнь и работает довольно точно.
про 0.5км не шутил. для незрячих ваши метод может и рабочий, а вот для быстрых объектов (например сенсор как уровень воды в м-а-а-аленьком баке с напором воды как мосводоканле). имхо лучше забирать данные в реальном времени, а не брать тухлятину.
про черню дыру без шуток. у меня сенсор слеп после 260см у вас после 400см. все что дальше для него черна дыра . если ничего не найдено то он выдает импульс длительностью 32мс...38мс (в зависимости от модели или прошивки. в сенсоре установлен 8 битный микропроцессор STC11, EM78P152). ваш незрячий может попасть под машину без этой проверки.
 

Вложения

Последнее редактирование:

enjoynering

Well-known member
спасибо что разрешили.

я в принципе не против, но хотелось бы увидеть Ваш код целиком (не кусками). махать языком все горазды, а как поделится так - у меня живот болит. заранее спасибо.
 

enjoynering

Well-known member
добавил простой (с размерностью 3) медианный фильтр. помогает на быстро меняющихся объектах - например замер уровня в баке при наборе воды
 
Сверху Снизу