Оранжевая палитра, программный блок "Ожидание"

Перед тем, как приступить к решению практических задач, давайте закрепим датчик касания на нашем роботе, как показано на Рис. 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.

Конструкция готова! Приступим к созданию программы. По условию задачи: робот должен двигаться вперед, пока не наткнется на препятствие. В этом случае датчик касания будет нажат! Для решения снова воспользуемся программным блоком "Ожидание".

Решение:

  1. Начать прямолинейное движение вперед (Рис. 9 поз. 1).
  2. Ждать, пока датчик касания не будет нажат (Рис. 9 поз. 2).
  3. Прекратить движение вперед (Рис. 9 поз. 3).

Для решения следующей задачи нам понадобится программный блок "Цикл" Оранжевой палитры.

Рис 9

Задача №8

Задача №8: необходимо написать программу, заставляющую робота двигаться вперед, при наезде на препятствие - отъезжать назад, поворачивать вправо на 90 градусов и продолжать движение вперед до следующего препятствия.

Подсказка: напишите и протестируйте программу движения - отъезда - поворота, а затем поместите эти блоки внутрь программного блока "Цикл".

Решение задачи №8

  1. Включаем моторы для прямолинейного движения вперед (Рис. 10 поз.1)
  2. Ожидаем нажатия датчика касания (Рис. 10 поз.2)
  3. Выключаем моторы (Рис. 10 поз.3)
  4. Отъезжаем немного назад (Рис. 10 поз.4)
  5. Расчитываем значения параметра для поворота робота вправо на 90 градусов (диаметр колес робота равен 56 мм (образовательная версия конструктора)) (Рис. 10 поз.5)
  6. Поворачиваем вправо на 90 градусов (Рис. 10 поз.6)
  7. Пункты 1 - 6 повторяем в бесконечном цикле (Рис. 10 поз.7)


Рис 10