Получение 0 см от ультразвукового датчика, когда ничего нет впереди
Мой ультразвуковой датчик (HC-SR04) возвращает следующие типы значений, когда перед ним ничего нет:
Ping: 144cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 105cm
Ping: 105cm
Ping: 94cm
Ping: 0cm
Ping: 378cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 106cm
Ping: 106cm
Ping: 0cm
Ping: 0cm
Ping: 0cm
Ping: 106cm
Ping: 250cm
Ping: 0cm
Ping: 108cm
Ping: 0cm
Ping: 108cm
Ping: 0cm
Я не могу понять, почему я получаю 0 см. Это значение имеет решающее значение в программе, которую я использую. Вот тестовый код, который дает мне такой вывод:
#include <NewPing.h>
#define TRIGGER_PIN A5
#define ECHO_PIN A4
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN);
void setup() {
Serial.begin(115200);
}
void loop() {
delay(1000);
Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");
}
Из-за этих нулей мой робот делает неожиданные повороты.
Есть ли у вас идеи, почему это может произойти?
@gpuguy, 👍1
1 ответ
Лучший ответ:
В документации к библиотеке NewPing указано:
Конструктор
NewPing sonar(trigger_pin, echo_pin [, max_cm_distance]);
и
max_cm_distance не является обязательным [по умолчанию = 500 см].
Затем:
sonar.ping_cm();
- Отправка пинга, возврат расстояния в сантиметрах или 0 (ноль), если в пределах установленного расстояния нет эха пинга
Поэтому, похоже, если перед вашим датчиком нет ничего ближе 500 см, эта библиотека возвращает 0 см. Возможно, это не лучший дизайн, но, по крайней мере, он раскрыт.
Таким образом, вам необходимо написать свой код таким образом, чтобы измерение в 0 см рассматривалось как отсутствие видимых препятствий; скорее как бесконечное измерение в см.
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Код для 2 ультразвуковых датчиков
- Сдвиг уровня 5В <-> 3,3В
- Подключение нескольких ультразвуковых датчиков (hc-sr04) к одной плате arduino.(мега)
- Как далеко может стоять HC-SR04 от микроконтроллера?
- Как использовать датчик HC-SR04 для изготовления расходомера?
- Ультразвуковой датчик (HC-SR04), регистрирующий случайное расстояние
- Как управлять двумя шаговыми двигателями и использовать ультразвуковой датчик вместе?
Библиотека определяет **NO_ECHO** как 0, поэтому для ясности проверьте
sonar.ping_cm() == NO_ECHO
., @Craig