Урок 9
Тема:Починаємо вивчати датчик кольору
Датчик цвета может работать в трех различных режимах:
- в режиме "Цвет" датчик может определить цвет поднесенного к нему предмета;
- в режиме "Яркость отраженного света" датчик направляет световой луч на близкорасположенный предмет и по отраженному пучку определяет яркость предмета;
- в режиме "Яркость внешнего освещения" датчик может определить - насколько ярко освещено пространство вокруг.
Рис. 1
Датчик цвета. Режим "Цвет"
В режиме "Цвет" датчик цвета достаточно точно умеет определять семь базовых цветов предметов, находящихся от него на расстоянии примерно в 1 см. Это следующие цвета: "черный"=1, "синий"=2, "зеленый"=3, "желтый"=4, "красный"=5, "белый"=6 и "коричневый"=7. Если предмет удален от датчика или некорректно определяется цвет предмета - датчик информирует об этом состоянием "Без цвета"=0.
Давайте, не затягивая, перейдем к практическому занятию!
Задача №9: необходимо написать программу, называющую цвета предметов, подносимых к датчику цвета.
Оранжевая палитра, программный блок "Переключатель"
В решении Задачи №9 нам поможет программный блок "Переключатель" Оранжевой палитры. Этот блок в зависимости от настроек выбирает для выполнения программные блоки, расположенные в одном из своих контейнеров. Рассмотрим настройку этого блока в режиме работы с датчиком цвета.
Создадим новую программу "lesson-5-9", установим в программе блок "Переключатель", выберем режим "Датчик цвета" - "Измерение" - "Цвет" (Рис. 2). В отличие от программного блока "Ожидание", программный блок "Переключатель" не ждет, пока наступит определенное событие, а проверяет текущее состояние и выполняет программные блоки, находящиеся в контейнере, сопоставленном текущему состоянию.
Рис. 2
Рассмотрим подробнее настройки программного блока "Переключатель":
- выбранный режим устанавливает изображение датчика цвета в блоке (Рис. 3 поз. 1),
- порт, к которому подключен датчик, отображается в соответствующем поле блока (Рис. 3 поз. 2),
- в настройках каждого программного контейнера выбирается значение, в соответствии с которым будут выполняться программные блоки, вложенные в этот контейнер (Рис. 3 поз. 3),
- один из контейнеров должен быть объявленным "Вариантом по умолчанию" - в случае, если значению, полученному от датчика, не соответствует ни один контейнер, то выполняется контейнер, объявленный "Вариантом по умолчанию" (Рис.3 поз. 4),
- Кнопка "+" добавляет программный контейнер в блоке "Переключатель" (Рис. 3поз. 5),
- Программный блок "Переключатель" может автоматически растягиваться, чтобы вместить все блоки, помещаемые внутрь. С помощью меток, помеченных красными стрелками, можно самому изменять размеры блока (Рис.3).
Рис. 3
Продолжим формирование программного блока "Переключатель":
- создадим необходимое количество контейнеров, соответствующее количеству цветов для распознавания + вариант "Без цвета",
- в настройках контейнеров установим распознаваемые цвета,
- вариантом по умолчанию выберем вариант "Без цвета",
- в каждый контейнер кроме варианта "Без цвета" (этот контейнер останется пустым) поместим программный блок "Звук" зеленой палитры.
- каждому цвету сопоставим соответствующий звуковой файл.
Рис. 4
Наш программный блок "Переключатель" значительно увеличился в размерах. Специальная кнопка (Рис. 5 поз. 1) позволяет переключить режим отображения блока на экране на "Вид с вкладками". Изменим размеры блока для комфортного визуального отображения.
Рис. 5
Осталось вставить наш настроенный программный блок "Переключатель" внутрь программного блока "Цикл" Оранжевой палитры. Программа готова! Загрузим её в робота и протестируем работу! (Рис. 6)
Рис.6
Оранжевая палитра, программный блок "Прерывание цикла"
Добавим в нашу программу движение. Сделаем следующее поле для выполнения задания:
Рис.8
Задача №10: необходимо написать программу прямолинейного движения робота, называющего цвета полос, над которыми он проезжает. При достижении черной полосы робот проговаривает "Stop" и останавливается.
Решение Задачи №10
- Внутрь цикла перед программным блоком "Переключатель" добавим программный блок "Рулевое управление", тем самым заставим нашего робота двигаться (Рис. 9 поз. 1). Во время движения робот будет проверять текущее состояние датчика цвета и произносить название цвета. Если полоски будут широкими, а робот будет двигаться медленно, то, возможно, он станет произносить название цвета более одного раза, так как проверка цвета будет происходить неоднократно. Если такое положение дел вас не устроит - увеличьте скорость робота, чтобы он быстрее проезжал цветные полосы.
- В соответствии с условием задачи нам надо изменить поведение контейнера программного блока "Переключатель" для черного цвета.
- В программном блоке "Звук" изменим звуковой файл "Black" на "Stop" (Рис. 9 поз. 2).
- Добавим в контейнер программный блок, выключающий моторы (Рис. 9 поз. 3).
- Нам требуется прервать выполнение программного блока "Цикл", чтобы завершить выполнение программы. Для этого поместим в контейнер программный блок "Превывание цикла" Оранжевой палитры (Рис. 9 поз. 4). У данного программного блока существует только одна настройка - название прерываемого цикла. В сложной программе со множеством циклов важно правильно устанавливать эту настройку, чтобы остановить выполнение нужного цикла (Рис. 9 поз. 5). В нашей программе за программным блоком "Цикл" отсутствуют другие программные блоки, поэтому программа завершится.
Рис. 9