Урок 25: Ультразвуковой датчик HC-SR04
1. Введение
Ультразвуковой датчик HC-SR04 — это доступный датчик близости/дистанции, который часто используется для избегания препятствий в робототехнике, измерения уровня воды, парковочных систем и других задач. Он позволяет Arduino «видеть» расстояние до объектов и предотвращать столкновения или падения.

2. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
Ультразвуковой датчик HC-SR04 |
4 |
Перемычки |
1 |
USB-кабель |
3. Спецификация
Параметр |
Значение |
---|---|
Рабочее напряжение |
DC 5V |
Рабочий ток |
15mA |
Рабочая частота |
40KHz |
Максимальное расстояние |
4 м |
Минимальное расстояние |
2 см |
Угол измерения |
15° |
Триггерный входной сигнал |
10 мкс TTL импульс |
Эхо выходной сигнал |
TTL уровень, пропорционален расстоянию |
4. Подключение

VCC — 5V Arduino
GND — GND Arduino
TRIG — цифровой пин 8 Arduino
ECHO — цифровой пин 7 Arduino
5. Пример кода
//////////////////////////////////////////////////////////
//Ультразвуковой
#define echoPin 7 // Эхо пин
#define trigPin 8 // Триггер пин
#define LEDPin 13 // Светодиод на плате
int maximumRange = 200; // Максимально необходимое расстояние
int minimumRange = 0; // Минимально необходимое расстояние
long duration, distance; // Продолжительность используется для расчета расстояния
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Использовать индикатор светодиода (если требуется)
}
void loop() {
// Следующий цикл trigPin/echoPin используется для определения
// расстояния до ближайшего объекта, отражая звуковые волны от него.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Расчет расстояния (в см) на основе скорости звука.
distance = duration / 58.2;
if (distance >= maximumRange || distance <= minimumRange) {
// Отправить компьютеру отрицательное число и включить светодиод
// для указания "вне диапазона"
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
}
else {
// Отправить расстояние на компьютер через Серийный протокол и
// выключить светодиод для указания успешного считывания.
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}
// Задержка 50 мс перед следующим считыванием.
delay(50);
}
//////////////////////////////////////////////////////////
6. Результат теста
После загрузки кода на плату откройте серийный монитор. Когда вы разместите объект перед ультразвуковым датчиком (на близком и дальнем расстоянии), он будет обнаруживать расстояние до объекта. Значение будет отображаться на мониторе.
7. Частые ошибки
Датчик всегда показывает -1 — проверьте подключение TRIG/ECHO и питание.
Значения скачут — избегайте помех, вибраций, прямых отражений.
Датчик не реагирует — проверьте правильность кода и портов.
8. Практические задачи
Измерение уровня воды в ёмкости.
Система парковки с индикацией расстояния.
Робот-избегатель препятствий.
9. Идеи для расширения
Визуализация данных в Processing или на LCD.
Использование нескольких датчиков для кругового обзора.
Передача данных по Bluetooth/Wi-Fi.
Подробнее о датчике HC-SR04: https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/