05Ультразвуковой дальномер
Подключите ультразвуковой датчик к пину 2 и напишите программу, которая измеряет расстояние и печатает его в «Монитор порта».
Задание
- Подключите датчик: сигнальный вывод — к пину 2, питание — к 5V и GND.
- Напишите программу, которая отправляет ультразвуковой импульс и измеряет время его возврата.
- Переведите время в сантиметры и выведите результат в «Монитор порта» (скорость 9600 бод).
- Проверьте: поднесите руку на 10, 20 и 50 см — числа должны меняться.
- Дополнительно: добавьте светодиод, который загорается, если расстояние меньше 15 см (сигнализация).
Что понадобится
- Arduino Uno
- Ультразвуковой датчик Parallax PING))) или HC-SR04
- Провода
Схема

Соберите схему в Tinkercad Circuits так же, как на картинке.
Код
Скопировать нельзя специально — наберите код руками и подумайте над каждой строкой.
1void setup()
2{
3 Serial.begin(9600);
4}
5
6void loop()
7{
8 pinMode(2, OUTPUT);
9 digitalWrite(2, HIGH);
10 delay(1);
11 digitalWrite(2, LOW);
12 pinMode(2, INPUT);
13
14 Serial.print(pulseIn(2, HIGH) / 58);
15 Serial.println(" cm");
16
17 delay(500);
18}
Что делает каждая строка
| Строка | Что делает |
|---|---|
| 1–4 | setup(): Serial.begin(9600) включает обмен с компьютером на скорости 9600 бод — чтобы в «Мониторе порта» появились числа. |
| 6–7 | Начало бесконечного цикла loop(). |
| 8 | Пин 2 настраиваем как выход — сейчас мы сами будем отправлять импульс датчику. |
| 9–11 | Подаём HIGH на 1 мс (delay(1)) и снова LOW: это короткий зондирующий импульс, который заставляет датчик издать ультразвук. |
| 12 | Сразу переключаем пин 2 в режим входа (INPUT) — теперь тот же провод будет принимать ответный сигнал. |
| 14 | pulseIn(2, HIGH) ждёт прихода сигнала и возвращает его длительность в микросекундах. Делим на 58 — получаем расстояние в сантиметрах (звук проходит 1 см туда-обратно примерно за 58 мкс). |
| 15 | Serial.println(" cm") выводит результат и переводит строку, чтобы каждое измерение было с новой строки. |
| 17 | delay(500) — новое измерение два раза в секунду, чтобы не засыпать монитор числами. |
| 18 | Конец loop(); измерения повторяются постоянно. |