4.05.2. Лабораторная работа №4.5.2.md
Парктроник
Тема работы
В прошлой работе мы научили Рудирон «петь», генерируя сигналы. Теперь давайте научимся «слушать» мир вокруг нас, используя не свет или температуру, а звук! В этой лабораторной работе мы познакомимся с ультразвуковым дальномером HC-SR04 — устройством, которое измеряет расстояние до объектов с помощью звуковых волн. Мы напишем программу, которая превратит Рудирон в настоящий автомобильный парктроник с цветовой индикацией.
Цель
- Понять принцип работы и ограничения ультразвукового дальномера
HC-SR04. - Научиться измерять длительность импульсов с помощью функции
pulseIn(). - Преобразовывать время в расстояние, используя простые физические формулы.
- Создать полноценное устройство с обратной связью — парктроник.
Оборудование и материалы
- Отладочная плата
Рудирон. - Макетная плата.
- Ультразвуковой дальномер.
RGB-светодиодс общим катодом.- 3 резистора номиналом 220 Ом.
- 4 соединительных провода.
- USB-кабель для подключения
Рудирона. - Компьютер с
Arduino IDE.
Ход работы
-
Как работает
HC-SR04и его особенности?Ультразвуковой дальномер работает по тому же принципу, что и эхолот на корабле или летучая мышь, ориентирующаяся в темноте. 1. Излучение.
Рудирондаёт команду, и передатчик (Trig) датчика отправляет короткую пачку ультразвуковых импульсов. 2. Отражение. Звуковая волна летит до препятствия, отражается от него и возвращается назад. 3. Приём. Приёмник (Echo) датчика улавливает отражённый сигнал. 4. Измерение. На выходеEchoпоявляется цифровой импульсHIGH, длительность которого прямо пропорциональна времени, которое звук летел до препятствия и обратно.
Важные особенности
HC-SR04, которые нужно знать:- Угол обзора. Датчик излучает звук не тонким лучом, а конусом с углом примерно 30-60 градусов. Это значит, что он может среагировать не на тот объект, который прямо перед ним, а на ближайший объект внутри этого конуса.
- Поглощение звука. Ультразвук хорошо отражается от твёрдых и гладких поверхностей (стена, книга, пластик), но очень плохо отражается от мягких и ворсистых материалов (одежда, шторы, ковёр, мягкие игрушки). Они поглощают звук, и датчик может их просто «не услышать».
- Эффективная дальность. Производитель заявляет дальность до 4 метров, но на практике надёжные измерения получаются в диапазоне от 2 см до ~3 метров. На больших расстояниях точность падает, и могут появляться случайные показания.
-
Сборка схемы
- Подключите
RGB-светодиод. Красный, зелёный и синий выводы (через резисторы 220 Ом) подключите к ШИМ-пинам 8, 7, 5. Общий катод — кGND. - Подключите
HC-SR04:- Вывод
VCC— к пину 5V. - Вывод
GND— кGND. - Вывод
Trig(триггер) — к пину 3. - Вывод
Echo(эхо) — к пину 1.
- Вывод

- Подключите
-
Написание и загрузка кода
- Установите перемычку
PRG | RUNв положениеPRG. -
В
Arduino IDEвведите следующий код:// Пины для датчика HC-SR04 const int trigPin = 3; const int echoPin = 1; // Пины для RGB-светодиода const int redPin = 8; const int greenPin = 7; const int bluePin = 5; void setup() { Serial.begin(9600); // Для отладки pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } // Функция для установки цвета void setColor(int r, int g, int b) { analogWrite(redPin, r); analogWrite(greenPin, g); analogWrite(bluePin, b); } void loop() { // 1. Отправляем инициирующий импульс на Trig digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // 2. Измеряем длительность ответного импульса на Echo long duration = pulseIn(echoPin, HIGH); // 3. Рассчитываем расстояние в сантиметрах // Скорость звука ~343 м/с или 0.0343 см/мкс. // Делим на 2, так как звук проходит путь туда и обратно. int distance = duration * 0.0343 / 2; Serial.print("Расстояние: "); Serial.print(distance); Serial.println(" см"); // 4. Устанавливаем цвет в зависимости от расстояния if (distance > 0 && distance <= 20) { setColor(255, 0, 0); // Красный - Опасно! } else if (distance > 20 && distance <= 40) { setColor(255, 255, 0); // Жёлтый - Внимание! } else if (distance > 40 && distance <= 60) { setColor(0, 255, 0); // Зелёный - Безопасно } else { setColor(0, 0, 0); // Выключен - далеко или ошибка } delay(100); // Пауза между измерениями } - Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы
- Откройте монитор порта, чтобы видеть точные значения расстояния.
- Возьмите какой-нибудь твёрдый предмет (например, книгу) и подносите его к датчику.
- Вы увидите, как
RGB-светодиодменяет цвет в зависимости от расстояния: зелёный, жёлтый, красный. - Попробуйте направить датчик на мягкую ткань или штору. Скорее всего, он покажет очень большое или нулевое расстояние, даже если ткань находится близко.
Результаты
Вы создали полноценный парктроник! Ваше устройство измеряет расстояние до объекта в реальном времени и предоставляет пользователю интуитивно понятную цветовую индикацию опасности, учитывая при этом физические ограничения датчика.
Анализ результатов
pulseIn(echoPin, HIGH). Это сердце нашего дальномера. Функция ждёт, пока на пинеEchoпоявитсяHIGH, измеряет, как долго он длится, и возвращает это время в микросекундах.int distance = duration * 0.0343 / 2;. Ключевая формула. Мы умножаем время полёта звука на его скорость (0.0343 см/мкс) и делим на 2, потому что звук проходит двойной путь (туда и обратно).if (distance > 0 && ...). Мы добавили проверкуdistance > 0, чтобы отсечь ошибочные показания, когда датчик не видит препятствия.
Выводы
В этой лабораторной работе вы научились работать с ультразвуковым дальномером HC-SR04. Вы освоили практическое применение функции pulseIn() и научились преобразовывать физические величины (время) в полезную информацию (расстояние). Самое главное, вы поняли, что у любого датчика есть свои ограничения, которые важно учитывать при проектировании проектов.
Вопросы для самопроверки
- Как работает ультразвуковой дальномер?
- Зачем в формуле расчёта расстояния мы делим время на 2?
- Почему датчик
HC-SR04может не «увидеть» мягкий свитер? - Что произойдёт, если поменять местами провода
TrigиEcho? - Как изменить код, чтобы при расстоянии менее 10 см светодиод не просто горел красным, а быстро мигал?
Вы научились измерять расстояние с помощью звука! В следующем параграфе мы познакомимся с аппаратными прерываниями — мощным инструментом, который позволяет микроконтроллеру мгновенно реагировать на внешние события.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home