Ультразвуковой дальномер HC-SR04
Ультразвуковой дальномер (датчик расстояния) HC-SR04. Генерирует звуковые импульсы на частоте 40 кГц, и по отраженному сигналу определяет расстояние до объекта. Программно сравнивая показания датчика, можем определить, перемещается ли объект, скорость и направление движения.
В отличие от инфракрасных датчиков расстояния не зависит от освещенности и цвета объекта. Однако и у него есть недостатки — плохо реагирует на слишком тонкие объекты, волосы, пух.
Для начала измерения необходимо подать на цифровой вход логическую единицу на 10мкс. После завершения измерения, на выход будет подана логическая единица на время, пропорциональное расстоянию до объекта.
Угол измерения 30°, наиболее эффективный — 15°. Прозрачность объекта не имеет значения.
Дальномер |
UNO |
Trig |
Цифровой вход 3 |
Echo |
Цифровой вход 2 |
GND |
GND |
VCC |
5 V |
Схема подключения ультразвукового дальномера HC-SR04
На изображении ниже представлена схема подключения дальномера.

Код для подключения ультразвукового дальномера HC-SR04
В примере ниже показано, как подключить вывод ультразвукового дальномера HC-SR04 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).
int echoPin = 2; // назначение цифрового вывода для Echo int trigPin = 3; // назначение цифрового вывода для Trig void setup() { Serial.begin (9600); // подключение монитора порта для выведения данных pinMode(trigPin, OUTPUT); // генерируется импульс для измерения расстояния pinMode(echoPin, INPUT); // завершение импульса, считывание дистанции } void loop() { int duration, cm; // назначение меры длины в см digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin delayMicroseconds(2); // пауза 2 микросекунды digitalWrite(trigPin, HIGH); // подача высокого сигнала на пин trigPin delayMicroseconds(10); // пауза 10 микросекунд digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin duration = pulseIn(echoPin, HIGH); // pulseIn - длина положительного импульса на пине echoPin в микросекундах cm = duration / 58; // формула для выведения корректных данных в см Serial.print(cm); // выведение данных в монитор порта в см Serial.println(" cm"); // условия выведения надписи в монитор порта, добавление к значению меры длины delay(1000); // пауза между измерениями 1 секунда }
Скачать файл с кодом, формат .INO: Ультразвуковой дальномер