Урок 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

  1. Внутрь цикла перед программным блоком "Переключатель" добавим программный блок "Рулевое управление", тем самым заставим нашего робота двигаться (Рис. 9 поз. 1). Во время движения робот будет проверять текущее состояние датчика цвета и произносить название цвета. Если полоски будут широкими, а робот будет двигаться медленно, то, возможно, он станет произносить название цвета более одного раза, так как проверка цвета будет происходить неоднократно. Если такое положение дел вас не устроит - увеличьте скорость робота, чтобы он быстрее проезжал цветные полосы.
  2. В соответствии с условием задачи нам надо изменить поведение контейнера программного блока "Переключатель" для черного цвета.
  3. В программном блоке "Звук" изменим звуковой файл "Black" на "Stop" (Рис. 9 поз. 2).
  4. Добавим в контейнер программный блок, выключающий моторы (Рис. 9 поз. 3).
  5. Нам требуется прервать выполнение программного блока "Цикл", чтобы завершить выполнение программы. Для этого поместим в контейнер программный блок "Превывание цикла" Оранжевой палитры (Рис. 9 поз. 4). У данного программного блока существует только одна настройка - название прерываемого цикла. В сложной программе со множеством циклов важно правильно устанавливать эту настройку, чтобы остановить выполнение нужного цикла (Рис. 9 поз. 5). В нашей программе за программным блоком "Цикл" отсутствуют другие программные блоки, поэтому программа завершится.

Рис. 9