Урок 5

Главное назначение ультразвукового датчика, это определение расстояния до предметов, находящихся перед ним. Для этого датчик посылает звуковую волну высокой частоты (ультразвук), ловит обратную волну, отраженную от объекта и, замерив время на возвращение ультразвукового импульса, с высокой точностью рассчитывает расстояние до предмета.

Рис.1

Ультразвуковой датчик может выдавать измеренное расстояние в сантиметрах или в дюймах. Диапазон измерений датчика в сантиметрах равен от 0 до 255 см, в дюймах - от 0 до 100 дюймов. Датчик не может обнаруживать предметы на расстоянии менее 3 см (1,5 дюймов). Так же он не достаточно устойчиво измеряет расстояние до мягких, тканевых и малообъемных объектов. Кроме режимов измерения расстояния в сантиметрах и дюймах датчик имеет специальный режим "Присутствие/слушать". В этом режиме датчик не излучает ультразвуковые импульсы, но способен обнаруживать импульсы другого ультразвукового датчика.

Практическое задание

Принцип работы ультразвукового датчика очень похож на радар, который применяется для измерения скорости движущихся автомобилей. Как радар узнаёт скорость автомобиля? Он измеряет расстояние до движущегося объекта, ждёт заданное небольшое время и повторяет измерение. Разность расстояний - это пройденный путь автомобиля. Разделив пройденный путь на время между двумя измерениями, можно найти скорость, с которой двигался объект измерения.

Давайте же научим и нашего робота работе радара!


Рис.2

Последовательность действий, выполняемых роботом, будет следующей:

  • Робот ждёт появления в зоне контроля движущегося объекта;
  • измеряет расстояние до объекта;
  • ждёт 1 секунду;
  • повторно измеряет расстояние до объекта;
  • находит пройденное расстояние и сравнивает его с пороговым значением;
  • выводит на экран результат и подает тревогу в случае превышения скорости.

Начнём создавать программу для нашего робота-полицейского.

  1. С помощью программного блока "Ожидание" ждём появления объекта в зоне контроля робота (Рис. 3 поз. 1). Расстояние до объекта передаем в программный блок "Математика" (Рис. 3 поз. 4).
  2. С помощью программного блока "Ожидание" ждем 1 секунду.
  3. Второй раз снимаем показание ультразвукового датчика (Рис. 3 поз. 3) и передаем полученное значение в программный блок "Математика" (Рис.3 поз. 4).
  4. В программном блоке "Математика" находим расстояние, пройденное объектом измерения за 1 секунду. Полученное значение передаем в программный блок "Сравнение" (Рис. 3 поз. 5) и выводим на экран (Рис. 3 поз. 6).
  5. С помощью программного блока "Сравнение" (Рис. 3 поз. 5) сравниваем пройденное расстояние с пороговым значением, равным 10. Результат сравнения двух чисел представляет собой логический вывод. Логический вывод может принимать одно из двух значений: "Да" или "Нет". Этот вывод мы передаем в прогаммный блок "Переключатель" (Рис. 3 поз. 7), настроив его на прием логических значений. Обратите внимание: шины данных, передающие логические значения, окрашены в зеленый цвет, в отличие от желтых шин данных, передающих числовые значения. (В дальнейшем мы подробнее ознакомимся с принципами обработки логических значений).
  6. С помощью программного блока "Переключатель" мы организуем две ветки поведения программы в зависимости от скорости объекта. Если объект за 1 секунду приблизился к роботу, больше чем на 10 см, значит, будем считать его приближение критическим и подадим сигналы тревоги (Рис. 3 поз. 8). В противном случае будем считать, что объект движется медленно, в этом случае робот включит зеленую подсветку клавиш модуля EV3 и произнесёт "Okay".
  7. В конце программы еще раз воспользуемся программным блоком "Ожидание" (Рис. 3 поз. 10) и "придержим" завершение программы на 5 секунд, чтобы успеть прочитать информацию на экране модуля EV3.

Рис.3

Загрузите программу в робота, расположите робота так, чтобы перед ним на расстоянии 60 сантиметров отсутствовали другие предметы, запустите программу на выполнение. Перемещайте в направлении к роботу игрушечный автомобиль или объемный предмет, наблюдайте за реакцией робота. Попробуйте изменять пороговые значения в программе. Как изменяется поведение робота?