← Все вопросы

Как измерить расстояние ультразвуковым датчиком HC-SR04 на Arduino?

Задан 20 месяцев назад449 просмотров1 ответ
8

Хочу сделать так, чтобы робот «видел» препятствие. Купил датчик HC-SR04 (такие два «глазика»). Как с него получить расстояние в сантиметрах? Совсем не понимаю, что там за Trig и Echo.

1 ответ

13
✓ Принятый ответ — помог автору

HC-SR04 работает как эхолот: посылает ультразвук с Trig и ловит отражение на Echo. По времени полёта считаем расстояние. Подключение: VCC → 5V, GND → GND, Trig и Echo → к двум цифровым пинам.

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // короткий импульс на Trig
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH); // время в мкс
  float distance = duration * 0.034 / 2;  // в см

  Serial.print(distance);
  Serial.println(" cm");
  delay(200);
}

Формула: звук летит ~0.034 см за микросекунду, делим на 2, потому что сигнал прошёл туда и обратно. Если расстояние показывает странно большое — обычно перепутаны Trig/Echo или нет общего GND.

Ваш ответ

Войдите, чтобы ответить на вопрос.