Введение:
Инфракрасный датчик входит домашнюю версию набора Lego mindstorms EV3. Это единственный датчик, который может применяться как самостоятельно, так и в паре с инфракрасным маяком, тоже являющимся частью домашнего набора. Следующие два урока мы посвятим изучению этих двух устройств, а также их взаимодействию между собой.
8.1. Изучаем инфракрасный датчик и инфракрасный маяк
Инфракрасный датчик (Рис. 1) в своей работе использует световые волны, невидимые человеку - инфракрасные волны*. Такие же волны используют, например, дистанционные пульты управления различной современной бытовой техникой (телевизорами, видео и музыкальными устройствами). Инфракрасный датчик в режиме "Приближение" самостоятельно посылает инфракрасные волны и, поймав отраженный сигнал, определяет наличие препятствия перед собой. Еще два режима работы инфракрасный датчик реализует в паре с инфракрасным маяком (Рис. 2). В режиме "Удаленный" инфракрасный датчик умеет определять нажатия кнопок инфракрасного маяка, что позволяет организовать дистанционное управление роботом. В режиме "Маяк" инфракрасный маяк посылает постоянные сигналы, по которым инфракрасный датчик может определять примерное направление и удаленность маяка, что позволяет запрограммировать робота таким образом, чтобы он всегда следовал в сторону инфракрасного маяка. Перед использованием инфракрасного маяка в него необходимо установить две батарейки AAA.
Рис. 1
Рис. 2
8.2. Инфракрасный датчик. Режим "Приближение"
Этот режим работы инфракрасного датчика похож на режим определения расстояния ультразвуковым датчиком. Разница кроется в природе световых волн: если звуковые волны отражаются от большинства материалов практически без затухания, то на отражение световых волн влияют не только материалы, но и цвет поверхности. Темные цвета в отличие от светлых сильнее поглощают световой поток, что влияет на работу инфракрасного датчика. Диапазон работы инфракрасного датчика также отличается от ультразвукового - датчик показывает значения в пределах от 0 (предмет находится очень близко) до 100 (предмет находится далеко или не обнаружен). Еще раз подчеркнем: инфракрасный датчик нельзя использовать для определения точного расстояния до объекта, так как на его показания в режиме "Приближение" оказывает влияние цвет поверхности исследуемого предмета. В свою очередь это свойство можно использовать для различия светлых и темных объектов, находящихся на равном расстоянии до робота. С задачей же определения препятствия перед собой инфракрасный датчик справляется вполне успешно.
Решим практическую задачу, похожую на Задачу №14 Урока №7, но, чтобы не повторяться, усложним условие дополнительными требованиями.
Задача №17: написать программу прямолинейно движущегося робота, останавливающегося перед стеной или препятствием, отъезжающего немного назад, поворачивающего на 90 градусов и продолжающего движение до следующего препятствия.
У робота, собранного по инструкции small-robot-31313, впереди по ходу движения установлен инфракрасный датчик. Соединим его кабелем с портом "3" модуля EV3 и приступим к созданию программы.
Рассмотрим программный блок "Ожидание" Оранжевой палитры, переключив его в Режим: "Инфракрасный датчик" - "Сравнение" - "Приближение" (Рис. 3). В этом режиме программный блок "Ожидание" имеет два входных параметра: "Тип сравнения" и "Пороговое значение". Настраивать эти параметры мы уже умеем.
Рис. 3
Решение:
- Начать прямолинейное движение вперед
- Ждать, пока пороговое значение инфракрасного датчика станет меньше 20
- Прекратить движение вперед
- Отъехать назад на 1 оборот двигателей
- Повернуть вправо на 90 градусов (воспользовавшись знаниями Урока №3, рассчитайте необходимый угол поворота моторов)
- Продолжить выполнение пунктов 1 - 5 в бесконечном цикле.
Попробуйте решить Задачу № 17 самостоятельно, не подглядывая в решение.
А теперь для закрепления материала попробуйте адаптировать решение Задачи №15 Урока №7 к использованию инфракрасного датчика! Получилось? Поделитесь впечатлениями в комментарии к уроку...
8.3. Дистанционное управление роботом с помощью инфракрасного маяка
Инфракрасный маяк, входящий в домашнюю версию конструктора Lego mindstorms EV3, в паре с инфракрасным датчиком позволяет реализовать дистанционное управление роботом. Познакомимся с маяком поближе:
- Пользуясь инфракрасным маяком, направляйте передатчик сигнала (Рис. 5 поз. 1) в сторону робота. Между маяком и роботом должны отсутствовать любые препятствия! Благодаря широкому углу обзора инфракрасный датчик уверено принимает сигналы, даже если маяк располагается позади робота!
- На корпусе маяка расположены 5 серых кнопок (Рис. 5 поз. 2), нажатия которых распознает инфракрасный датчик, и передает коды нажатий в программу, управляющую роботом.
- С помощью специального красного переключателя (Рис. 5 поз. 3) можно выбрать один из четырех каналов для связи маяка и датчика. Сделано это для того, чтобы в непосредственной близости можно было управлять несколькими роботами.
Рис. 5
Задача №18: написать программу дистанционного управления роботом с помощью инфракрасного маяка.
Мы уже знаем, что для реализации возможности выбора выполняющихся блоков необходимо воспользоваться программным блоком "Переключатель" Оранжевой палитры. Установим режим работы блока "Переключатель" в "Инфракрасный датчик" - "Измерение" - "Удалённый" (Рис. 6).
Рис. 6
Для активации связи между инфракрасным датчиком и маяком необходимо установить правильное значение параметра "Канал" (Рис. 7 поз. 1) в соответствии с выбранным каналом на маяке! Каждому программному контейнеру блока "Переключатель" необходимо сопоставить один из возможных вариантов нажатия серых клавиш (Рис. 7 поз. 2). Заметьте: некоторые варианты включают одновременное нажатие двух клавиш (нажатые клавиши помечены красным цветом). Всего в программном блоке "Переключатель" в этом режиме можно обрабатывать до 12 различающихся условий (одно из условий должно быть выбрано условием по умолчанию). Добавляются программные контейнеры в блок "Переключатель" нажатием на "+" (Рис. 7 поз.3).
Рис. 7
Предлагаем реализовать следующий алгоритм управления роботом:
- Нажатие верхней левой кнопки включает вращение левого мотора, робот поворачивает вправо (Рис. 7 поз. 2 значение: 1)
- Нажатие верхней правой кнопки включает вращение правого мотора, робот поворачивает влево (Рис. 7 поз. 2 значение: 3)
- Одновременное нажатие верхних левой и правой кнопок включает одновременное вращение вперед левого и правого мотора, робот двигается вперед прямолинейно (Рис. 7 поз. 2 значение: 5)
- Одновременное нажатие нижних левой и правой кнопок включает одновременное вращение назад левого и правого мотора, робот двигается назад прямолинейно (Рис. 7 поз. 2 значение: 8)
- Если не нажата ни одна кнопка маяка - робот останавливается (Рис. 7 поз. 2 значение: 0).
При разработке алгоритма дистанционного управления вы должны знать следующее: когда нажата одна из комбинаций серых кнопок - инфракрасный маяк непрерывно посылает соответствующий сигнал, если кнопки отпущены, то отправка сигнала прекращается. Исключение составляет отдельная горизонтальная серая кнопка (Рис. 7 поз 2 значение: 9). Эта кнопка имеет два состояния: "ВКЛ" - "ВЫКЛ". Во включенном состоянии маяк продолжает посылать сигнал, даже если вы отпустите кнопку (о чём сигнализирует загорающийся зеленый светодиод), чтобы выключить отправку сигнала в этом режиме - нажмите горизонтальную серую кнопку еще раз.
Приступим к реализации программы:
Наш алгоритм дистанционного управления предусматривает 5 вариантов поведения, соответственно наш программный блок "Переключатель" будет состоять из пяти программных контейнеров. Займемся их настройкой.
- Вариантом по умолчанию назначим вариант, когда не нажата ни одна кнопка (Рис. 7 поз. 2 значение: 0). Установим в контейнер программный блок "Независимое управление моторами", выключающий моторы "B" и "C".
- В контейнер варианта нажатия верхней левой кнопки (Рис. 7 поз. 2 значение: 1) установим программный блок "Большой мотор", включающий мотор "B".
- В контейнер варианта нажатия верхней правой кнопки (Рис. 7 поз. 2 значение: 3) установим программный блок "Большой мотор", включающий мотор "C".
- В контейнер варианта одновременного нажатия верхних левой и правой кнопок (Рис. 7 поз. 2 значение: 5) установим программный блок "Независимое управление моторами", включающий вращение моторов "B" и "C" вперед.
- В контейнер варианта одновременного нажатия нижних левой и правой кнопок (Рис. 7 поз. 2 значение: 8) установим программный блок "Независимое управление моторами", включающий вращение моторов "B" и "C" назад.
- Поместим наш настроенный программный блок "Переключатель" внутрь программного блока "Цикл".
По предложенной схеме попробуйте создать программу самостоятельно, не подглядывая в решение!
Рис. 8
Загрузите получившуюся программу в робота и запустите её на выполнение. Попробуйте управлять роботом с помощью инфракрасного маяка. Всё ли у вас получилось? Понятен ли вам принцип реализации дистанционного управления? Попробуйте реализовать дополнительные варианты управления. Напишите свои впечатления в комментарии к этому уроку.
* Хотите увидеть невидимые волны? Включите режим фотосъемки в мобильном телефоне и поднесите излучающий элемент дистанционного пульта от телевизора к объективу мобильного телефона. Нажимайте кнопки пульта дистанционного управления и на экране телефона наблюдайте свечение инфракрасных волн.