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