Урок 10
Датчик касания
Этот датчик, по сути, представляет собой специальную кнопку, которая может находиться в двух состояниях: "Нажатие" (Рис. 2 поз. 1) или "Освобождение" (Рис. 2 поз. 2). Также, последовательный переход в состояние "Нажатие", а затем "Освобождение" называется: "Щелчок" (Рис. 2 поз. 3) и может обрабатываться программой. как самостоятельное событие.
Рис.2
Оранжевая палитра – Управление операторами
Какие же инструменты представляет нам среда программирования для получения информации с датчиков и реагирования на эту информацию в программе? Давайте начнем знакомиться с программными блоками, расположенными в Оранжевой палитре, которая называется "Управление операторами". (Рис. 3)
Рис.3
Программные блоки Оранжевой палитры, не смотря на свою малочисленность, очень важны! С помощью этих блоков мы можем обрабатывать массу событий и условий и сложно представить практическую программу, которая может обойтись без этих блоков.
- С самым первым блоком Оранжевой палитры мы уже с вами знакомы: он называется "Начало". Именно с него начинаются все программы для роботов.
- Второй программный блок называется "Ожидание". Этот блок заставляет программу ожидать выполнения какого-либо условия или наступления какого-либо события. Пока не выполнится условие, установленное в этом блоке, программа не перейдет к выполнению следующих программных блоков! Если перед тем, как начнется выполнение блока "Ожидание" были включены, какие-либо моторы, то они будут продолжать вращаться с установленной скоростью.
- Третий программный блок называется "Цикл". Этот блок многократно выполняет программные блоки, вложенные внутрь его, пока не будет выполнено условие завершения цикла, заданное в настройках блока.
- Следующий программный блок называется "Переключатель". Он служит для того, чтобы в зависимости от заданных условий - выполнить одну последовательность программных блоков, вложенных в один из своих контейнеров.
- Заключительный программный блок называется "Прерывание цикла". Его предназначение - досрочное прекращение выполнения заданного цикла.
Программные блоки "Ожидание", "Цикл" и "Переключатель" имеют множество режимов и соответствующих настроек, знакомиться с которыми мы будем на практических примерах, последовательно и с наглядными пояснениями.
Оранжевая палитра, программный блок "Ожидание"
Перед тем, как приступить к решению практических задач, давайте закрепим датчик касания на нашем роботе, как показано на Рис. 4, и подключим его кабелем к порту "1" модуля EV3.
Рис.4
Задача №1: необходимо написать программу, запускающую движение робота по щелчку кнопки.
Решение:
Само условие задачи подсказывает нам возможное решение: перед началом движения - необходимо дождаться нажатия-отпускания кнопки датчика касания. Возьмем программный блок "Ожидание", изменим режим программного блока на "Датчик касания" - "Сравнение" (Рис.5).
Рис.5
Как можно увидеть - программный блок "Ожидание" сменил свое отображение! Рядом с песочными часами появилось изображение датчика касания (Рис. 6 поз. 1), помогающее в программе визуально оценивать установленный режим работы. Настройка программного блока "Состояние" задает требуемое состояние датчика, достижение которого прекратит выполнение блока "Ожидание" (Рис. 6 поз. 2). Настройка "Состояние" может принимать следующие значение: "0" - "Отпущено", "1" - "Нажатие", "2" - "Щелчок". Для решения нашей задачи выберем состояние "Щелчок". Вывод "Измеренное значение" (Рис. 6 поз. 3) при необходимости позволяет передать окончательное состояние датчика для обработки в другой программный блок.
Рис.6
Итак: при такой настройке блока ожидания выполнение нашей программы будет остановлено до нажатия-отпускания кнопки датчика касания. Только после "Щелчка" выполнение будет передано следующему программному блоку. Установим после блока ожидания один программный блок "Рулевое управление", загрузим программу в робота и убедимся в правильности её выполнения! (Рис. 7)
Рис.7
Задача №2: необходимо написать программу, останавливающую робота, столкнувшегося с препятствием.
Из датчика касания давайте соберем небольшой бампер, который будет нам сигнализировать о том, что наш робот столкнулся с препятствием. Ниже приведены подробные инструкции для сборки, как из домашней, так и из образовательной версии конструктора Lego mindstorms EV3. Можете поэкспериментировать и придумать собственный вариант конструкции.
Получившийся элемент закрепим на передней балке нашего робота и соединим датчик касания с портом "1" модуля EV3.
Конструкция готова! Приступим к созданию программы. По условию задачи: робот должен двигаться вперед, пока не наткнется на препятствие. В этом случае датчик касания будет нажат! Для решения снова воспользуемся программным блоком "Ожидание".
Решение:
- Начать прямолинейное движение вперед (Рис. 8 поз. 1).
- Ждать, пока датчик касания не будет нажат (Рис. 8 поз. 2).
- Прекратить движение вперед (Рис. 8 поз. 3).
Рис.8
Для решения следующей задачи нам понадобится программный блок "Цикл" Оранжевой палитры.
Задача №3: необходимо написать программу, заставляющую робота двигаться вперед, при наезде на препятствие - отъезжать назад, поворачивать вправо на 90 градусов и продолжать движение вперед до следующего препятствия.
Подсказка: напишите и протестируйте программу движения - отъезда - поворота, а затем поместите эти блоки внутрь программного блока "Цикл".
Алгоритм:
- Включаем моторы для прямолинейного движения вперед
- Ожидаем нажатия датчика касания
- Выключаем моторы
- Отъезжаем немного назад
- Расчитываем значения параметра для поворота робота вправо на 90 градусов (диаметр колес робота равен 56 мм (образовательная версия конструктора))
- Поворачиваем вправо на 90 градусов
- Пункты 1 - 6 повторяем в бесконечном цикле
Испытание 1
Ваш робот – бейсбольный игрок, который должен пробежать все базы и вернуться домой. • Можете ли вы запрограммировать вашего робота двигаться вперед и потом повернуться налево? • Используйте квадратную коробку или скотч/изоленту
Испытание 2
Ваш робот – бейсбольный игрок, который должен прибежать ко 2ой базе, развернуться, вернуться назад. • Ехать прямо. Повернуться на 180 градусов и вернуться в изначальную точку.