Подписаться YouTube

Подключение HC-SR04

Схема подключения ультразвукового датчика HC-SR04 к Arduino

Схема подключения HC-SR04

Пример кода для подключения ультразвукового датчика HC-SR04 к Arduino

int trigPin = 11;    // Trigger
int echoPin = 12;    // Echo
long duration, cm, inches;

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

void loop() {
  // Датчик срабатывает ВЫСОКИМ импульсом длительностью 10 или более микросекунд.
  // Заранее подайте короткий НИЗКИЙ импульс, чтобы обеспечить чистый ВЫСОКИЙ импульс:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Считываем сигнал с датчика: ВЫСОКИЙ импульс,
  // продолжительность - это время (в микросекундах) с момента отправки пинга до приема его эха от объекта.
  pinMode(echoPin, INPUT);
  duration = pulseIn(echoPin, HIGH);

  // Преобразуем время в расстояние
  cm = (duration/2) / 29.1;
  inches = (duration/2) / 74;

  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(250);
}

Как работает код

Сначала вы создаете переменные для триггера и вывода эхо, называемых trigPin и echoPin соответственно. Триггерный контакт подключен к pin11, а контакты эха подключены к pin12

int trigPin = 11;
int echoPin = 12;

Вы также создаете три переменные типа long: duration, cm, inches. В duration переменная хранит время между передачей и приемом сигнала. В cm переменная сохранит расстояние в сантиметрах, а inches переменная сохранит расстояние в дюймах.

long duration, cm, inches;

в setup(), инициализируйте последовательный порт со скоростью 9600 бод и установите контакт триггера как выход, а контакт эхо как вход.

Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

в loop(), активируйте датчик, отправив ВЫСОКИЙ импульс длительностью 10 микросекунд. Но перед этим подайте короткий НИЗКИЙ импульс, чтобы убедиться, что вы получите чистый ВЫСОКИЙ импульс:

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

Затем вы можете прочитать сигнал с датчика - ВЫСОКИЙ импульс, длительность которого представляет собой время в микросекундах от момента отправки сигнала до приема его эха от объекта.

duration = pulseIn(echoPin, HIGH);

Наконец, вам просто нужно преобразовать продолжительность в расстояние. Мы можем рассчитать расстояние, используя следующую формулу:

расстояние = (время прохождения / 2) * скорость звука
Скорость звука: 343 м/с = 0,0343 см/мкс = 1 / 29,1 см/мкс.
Или в дюймах: 13503,9 дюйма/с = 0,0135 дюйма/мкс = 1/74 дюйма/мкс

Нам нужно разделить duration на 2, потому что мы должны учитывать, что волна была отправлена, попала в объект, а затем вернулась обратно к датчику.

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

Наконец, мы распечатываем результаты в Serial Monitor:

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();

Подробный видеообзор ультразвукового датчика HC-SR04

Комментарии пользователей