Следование за инфракрасным маяком

Урок №9 - Продолжаем изучать инфракрасный датчик

Конец формы

Содержание урока

Введение:

Наш очередной урок мы посвятим последнему режиму совместной работы инфракрасного датчика и инфракрасного маяка - режиму "Маяк". В этом режиме инфракрасный датчик способен обнаруживать излучение инфракрасного маяка, а также определять примерное направление и расстояние до него.

9.1. Инфракрасный датчик. Режим "Маяк"

Для того, чтобы использовать инфракрасный маяк в этом режиме, следует, нажав отдельную горизонтальную серую кнопку, перевести маяк в режим непрерывного излучения сигнала (Рис. 1 поз. 1). При этом на инфракрасном маяке загорится зеленый индикатор.

Рис. 1

Давайте рассмотрим программный блок "Инфракрасный датчик" Желтой палитры в режиме "Измерение" - "Маяк". (Рис. 2) В этом режиме программный блок имеет один входной параметр, определяющий номер канала работы инфракрасного маяка (Рис. 2 поз.1), а также три выходных параметра: "Направление" (Рис. 2 поз.2), "Приближение" (Рис. 2 поз.3) и "Обнаружено" (Рис. 2 поз.4).

Рис. 2

· Параметр "Обнаружено" выдает логическое значение "Да" - если инфракрасный маяк обнаружен датчиком, и "Нет" - в противном случае.

· Параметр "Приближение" выдает числовое значение в диапазоне от 0 до 100. Значение, равное 0, означает, что инфракрасный маяк находится очень близко. Значения, меньшие 100, сигнализируют о том, что инфракрасный маяк уверенно обнаруживается датчиком и находится в относительной удаленности от робота. Значение, равное 100 говорит нам о том, что инфракрасный маяк находится очень далеко или не обнаружен датчиком.

· Параметр "Направление" выдает числовое значение в диапазоне от -25 до 25. Значение, равное 0, означает, что инфракрасный маяк находится строго напротив инфракрасного датчика. Отрицательные значения свидетельствуют об отклонении инфракрасного датчика в левую сторону от направления датчика (против часовой стрелки), а положительные - в правую сторону от направления датчика (по часовой стрелке) (Рис. 3)

Рис. 3

Попробуем применить полученные знания на практике и создать программу для робота, позволяющую ему находить инфракрасный маяк и следовать за ним.

Поиск инфракрасного маяка

На первом этапе приступим к созданию программы поиска роботом инфракрасного маяка.

Задача № 19: написать программу для робота, вращающегося вокруг своей оси и останавливающегося в направлении инфракрасного датчика.

Решение:

1. Используя программный блок "Независимое управление моторами", начать вращение робота вокруг своей оси против часовой стрелки (Рис. 4 поз. 1).

2. Используя программный блок "Ожидание" в режиме "Инфракрасный датчик" - "Сравнение" - "Приближение маяка" (Рис. 4 поз. 2) с пороговым значением равным 80 (Рис. 4 поз. 3), ожидаем, пока робот не обнаружит инфракрасный маяк (значение параметра "Приближение" станет меньше 100).

3. Так как наш робот вращается против часовой стрелки, то, когда инфракрасный датчик обнаружит маяк, его параметр "Направление" примет отрицательное значение. Поэтому, следующий программный блок "Ожидание" в режиме "Инфракрасный датчик" - "Сравнение" - "Направление маяка" (Рис. 4 поз. 4) даст возможность роботу вращаться до тех пор, пока робот не окажется напротив инфракрасного маяка (значение параметра "Пороговое значение" превысит 0 (Рис. 4 поз. 5)).

4. Так как наш робот, вращаясь с большой скоростью, может повернуть чуть больше в результате сил инерции, то, на малой скорости, используя следующие два программных блока, повернем робота по часовой стрелке (Рис. 4 поз. 6, 7).

5. Выключим моторы робота (Рис. 4 поз. 8).

Загрузите программу в робота, поверните робота спиной к инфракрасному маяку, включите маяк и запустите программу на выполнение. Наш робот должен остановиться напротив маяка. Получилось? Для того чтобы лучше понять принцип работы нашей программы, попробуйте, изменив направление начального вращения робота (по часовой стрелке), отредактировать необходимые программные блоки и добиться правильной её работы.

Рис. 4

Следование за инфракрасным маяком

Задача №20: написать программу следования робота за инфракрасным маяком.

Решение:

Наш робот научился уверенно определять направление инфракрасного маяка и поворачивать в его сторону. Осталось только доехать до него и остановиться напротив. Решить эту задачу можно различными способами. Предлагаю вам воспользоваться возможностями, предоставляемыми программным блоком "Инфракрасный датчик" Желтой палитры, который мы рассмотрели в первой части сегодняшнего урока. Как поведет себя наш робот, если в бесконечном цикле мы подадим значение параметра "Приближение" (Рис. 5 поз. 1) программного блока "Инфракрасного датчика" на вход параметра "Мощность" (Рис. 5 поз. 2) программного блока "Рулевое управление" Зеленой палитры?

Поместим включенный маяк непосредственно перед роботом. Загрузим получившуюся программу (Рис. 5)в робота и запустим её на выполнение. Приближаясь к маяку, наш робот будет постепенно замедляться. Подъехав вплотную к маяку, робот остановится. Если отодвинуть маяк, то робот снова устремится в его сторону.

Рис. 5

К сожалению, пока наш робот не умеет изменять направление движения. Если инфракрасный маяк переместить влево - вправо от направления движения робота, то, наш робот проедет мимо. Давайте научим движущегося робота поворачивать в сторону маяка. Для этого возьмем параметр "Направление" (Рис. 6 поз. 1) программного блока "Инфракрасный датчик", умножим его на 2 (Рис. 6 поз. 2) и подадим на вход параметра "Рулевое управление" (Рис. 6 поз. 3) программного блока "Рулевое управление". Для чего нам потребовалось умножение? Диапазон значений параметра "Направление" от -25 до 25. Получая значения из этого диапазона, робот будет поворачивать на недостаточный угол - умножение же расширяет диапазон значений от -50 до 50, что позволит роботу уверенно следовать за перемещениями маяка.

Снова поместим включенный инфракрасный маяк напротив робота. Загрузим исправленную программу (Рис. 6) в робота и запустим её на выполнение. Как только робот устремится в сторону инфракрасного маяка, начнем перемещать маяк влево или вправо от направления движения робота. Наш робот будет уверено поворачивать в сторону маяка!

Рис. 6

Теперь наша программа отлично справляется с задачей следования за инфракрасным маяком. Но, если выключить маяк, то робот начинает вести себя непредсказуемо. Ведь мы никак не учитываем показание параметра "Обнаружено" (Рис. 7 поз. 1) программного блока "Инфракрасный датчик". Если робот теряет маяк, то значение параметра "Обнаружено" становится равным "Нет". Подадим значение параметра "Обнаружено" на вход программного блока "Переключатель", установленного в режим "Логическое значение". В контейнер логического значения "Нет" установим программный блок "Прерывание цикла" Оранжевой палитры (Рис. 7 поз. 2). Параметр "Имя прерывания" программного блока "Прерывание цикла" должно соответствовать имени цикла!

Рис. 7

Протестируем получившуюся программу (Рис. 7) - стоит выключить инфракрасный маяк, как программный блок "Прерывание цикла" фактически остановит выполнение нашей программы!

 

 


Дата добавления: 2019-02-26; просмотров: 103; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!