Что происходит в программе если используется блок ожидание ev3

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна

Введение:

В состав конструктора Lego mindstorms EV3 входят различные датчики. Главная задача датчиков — представлять информацию из внешней среды модулю EV3, а задача программиста — научиться получать и обрабатывать эту информацию, подавая необходимые команды моторам робота. На протяжении ряда уроков мы будем последовательно знакомиться со всеми датчиками, входящими и в домашний, и в образовательный наборы, научимся взаимодействовать с ними и решать наиболее распространенные задачи управления роботом.

Программирование в Lego Mindstorms EV3. Урок #7: Блок Ожидания

4.1. Изучаем первый датчик – датчик касания

Для подключения датчиков к модулю EV3 предназначены порты, обозначенные цифрами «1», «2», «3» и «4». Таким образом, к одному модулю EV3 одновременно можно подключить до четырех различных датчиков. Все порты абсолютно равнозначны и вы можете подключать датчики к любым портам, главное — будьте внимательны при указании номера порта для соответствующих датчиков в ваших программах.

Порты подключения датчиков

Рис. 1

Первым датчиком, который мы изучим, будет датчик касания (Рис. 2).

Датчик касания

Рис. 2

Этот датчик, по сути, представляет собой специальную кнопку, которая может находиться в двух состояниях: «Нажатие» (Рис. 3 поз. 1) или «Освобождение» (Рис. 3 поз. 2). Также, последовательный переход в состояние «Нажатие», а затем «Освобождение» называется: «Щелчок» (Рис. 3 поз.

3) и может обрабатываться программой. как самостоятельное событие.

Состояния датчика касания

Рис. 3

4.2. Оранжевая палитра – Управление операторами

Какие же инструменты представляет нам среда программирования для получения информации с датчиков и реагирования на эту информацию в программе? Давайте начнем знакомиться с программными блоками, расположенными в Оранжевой палитре, которая называется «Управление операторами». (Рис. 4)

Оранжевая палитра Управление операторами

Рис. 4

Программные блоки Оранжевой палитры, не смотря на свою малочисленность, очень важны! С помощью этих блоков мы можем обрабатывать массу событий и условий и сложно представить практическую программу, которая может обойтись без этих блоков.

  • С самым первым блоком Оранжевой палитры мы уже с вами знакомы: он называется «Начало». Именно с него начинаются все программы для роботов.
  • Второй программный блок называется «Ожидание». Этот блок заставляет программу ожидать выполнения какого-либо условия или наступления какого-либо события. Пока не выполнится условие, установленное в этом блоке, программа не перейдет к выполнению следующих программных блоков! Если перед тем, как начнется выполнение блока «Ожидание» были включены, какие-либо моторы, то они будут продолжать вращаться с установленной скоростью.
  • Третий программный блок называется «Цикл». Этот блок многократно выполняет программные блоки, вложенные внутрь его, пока не будет выполнено условие завершения цикла, заданное в настройках блока.
  • Следующий программный блок называется «Переключатель». Он служит для того, чтобы в зависимости от заданных условий — выполнить одну последовательность программных блоков, вложенных в один из своих контейнеров.
  • Заключительный программный блок называется «Прерывание цикла». Его предназначение — досрочное прекращение выполнения заданного цикла.

Программные блоки «Ожидание», «Цикл» и «Переключатель» имеют множество режимов и соответствующих настроек, знакомиться с которыми мы будем на практических примерах, последовательно и с наглядными пояснениями.

Читайте также:
Программа учебного курса это

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

Перед тем, как приступить к решению практических задач, давайте закрепим датчик касания на нашем роботе, как показано на Рис. 5, и подключим его кабелем к порту «1» модуля EV3.

Установка датчика касания на робота

Рис. 5

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

Решение:

Само условие задачи подсказывает нам возможное решение: перед началом движения — необходимо дождаться нажатия-отпускания кнопки датчика касания. Возьмем программный блок «Ожидание», изменим режим программного блока на «Датчик касания» — «Сравнение» (Рис. 6).

Блок

Рис. 6

Как можно увидеть — программный блок «Ожидание» сменил свое отображение! Рядом с песочными часами появилось изображение датчика касания (Рис. 7 поз. 1), помогающее в программе визуально оценивать установленный режим работы.

Настройка программного блока «Состояние» задает требуемое состояние датчика, достижение которого прекратит выполнение блока «Ожидание» (Рис. 7 поз. 2). Настройка «Состояние» может принимать следующие значение: «0» — «Отпущено», «1» — «Нажатие», «2» — «Щелчок».

Для решения нашей задачи выберем состояние «Щелчок». Вывод «Измеренное значение» (Рис. 7 поз. 3) при необходимости позволяет передать окончательное состояние датчика для обработки в другой программный блок.

Блок ожидания. Датчик касания.

Рис. 7

Итак: при такой настройке блока ожидания выполнение нашей программы будет остановлено до нажатия-отпускания кнопки датчика касания. Только после «Щелчка» выполнение будет передано следующему программному блоку. Установим после блока ожидания один программный блок «Рулевое управление», загрузим программу в робота и убедимся в правильности её выполнения! (Рис. 8)

Решение задачи 6

Рис. 8

Задача №7: необходимо написать программу, останавливающую робота, столкнувшегося с препятствием.

Из датчика касания давайте соберем небольшой бампер, который будет нам сигнализировать о том, что наш робот столкнулся с препятствием. Ниже приведены подробные инструкции для сборки, как из домашней, так и из образовательной версии конструктора Lego mindstorms EV3. Можете поэкспериментировать и придумать собственный вариант конструкции.

Lego mindstorms EV3 home

Инструкция по сборке для домашней версии конструктора

Lego mindstorms EV3 education

Инструкция по сборке для образовательной версии конструктора

Получившийся элемент закрепим на передней балке нашего робота и соединим датчик касания с портом «1» модуля EV3.

Lego mindstorms EV3 Home

Размещение на домашней версии набора

Lego mindstorms EV3 Education

Размещение на образовательной версии набора

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

Решение:

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

Решение задачи 7

Рис. 9

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

Задача №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)
Читайте также:
Узнать дату установки программы

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

Рис. 10

Источник: robot-help.ru

Программные блоки циклов и алгоритмических структур

В оранжевой закладке палитры редактора Lego EV3 находятся блоки «Управление операторами». Это алгоритмические структуры, без которых невозможно создавать программы. С их помощью происходит запуск кода, переключение, прерывание, зацикливание и прочее. Еще их называют блоками последовательности действий. В верхней части пиктограмм расположена узкая оранжевая горизонтальная полоса.

управление операторами Lego Education EV3

Всего во вкладке «Управление операторами» находится пять иконок слева направо:

  1. Начало
  2. Ожидание
  3. Цикл
  4. Переключатель
  5. Прерывание

«Начало»

Он всегда расположен в начале и служит для запуска программы на выполнение. На пиктограмме изображена стрелка зеленого цвета. Без него код работать не будет и другие значки не будут активными. В окне редактора если значка «Начало» нет или он не соединен с другими, остальные фрагменты программы выглядят немного замутненными.

Программный блок Lego EV3 Начало

Если добавить еще одну или несколько пиктограмм «Начало» в окно редактора Lego, то можно создать несколько параллельных программ, работающих независимо друг от друга. При отладке каждую подпрограмму можно запустить отдельно. Но при запуске на выполнение все параллельные ветки работают одновременно и автономно.

«Ожидание»

На значке нарисованы песочные часы. С помощью ожидания можно ждать наступления какого-нибудь события. Если это событие наступит, то происходит переход программы к другой части.

Всего есть тринадцать вкладок с типами сенсоров, кнопками, счетчиками и т.д. в блоке ожидания EV3:

Блок Ожидание Lego EV3

  1. Кнопки управления модулем
  2. Датчик цвета
  3. Гироскопический датчик
  4. Инфракрасный датчик
  5. Вращение мотора
  6. Температурный датчик
  7. Таймер
  8. Датчик касания
  9. Ультразвуковой датчик
  10. Счетчик электроэнергии
  11. Датчик звука NXT
  12. Обмен сообщениями
  13. Время

У каждой закладки есть режимы сравнения, изменения или обновления, которые имеют свои подпункты. В целом это мощный инструмент, позволяющий создавать сложные программы, зависящие от конкретных условий.

«Цикл»

Для того чтобы повторить нужную последовательность кода определенное число раз при соблюдении нужных условий в редакторе Lego Education EV3 предусмотрен программный блок. Фактически он представляет собой контейнер с визуальным кодом. Проверка условий происходит после однократного выполнения кода. Конструкция «Цикл» является алгоритмической структурой типа «while» с постусловием.

Фрагмент программы внутри контейнера будет повторяться. Блоки, не входящие в него повторяться не будут. По завершению произойдет переход к следующим блокам, которые не входят в цикл. Иконка цикла расположена третьей по счету слева во вкладке «Управление операторами». Управление режимами находится в правом нижнем углу пиктограммы.

блок Цикл Lego Mindstorms-EV3

Всего есть шестнадцать закладок. Тринадцать из них такие же, как и у блока «Ожидание». Добавлены еще три пункта:

  1. Неограниченный
  2. Подсчет
  3. Логическое значение

В левой части иконки расположен вывод «Параметры цикла». С его помощью можно выполнить подсчет числа повторений, времени, логического значения, типов сравнения, порогового значения и прочее. Введенное значение зависит от заданного режима или от переданного по шине данных значения от выводов других блоков.

Циклы можно вкладывать друг в друга. Если в конструкцию добавляются фрагменты, то размер значка увеличивается. Также размер пиктограммы можно изменять с помощью маркеров, находящихся на границах изображения. Это очень похоже на изменения размера картинки в документе Word.

«Переключатель»

Находится четвертым слева в оранжевой закладке алгоритмических структур. По сравнению с циклом у него на одну вкладку меньше. Отсутствует пункт «Неограниченный». Он соответствует конструкции «if»… «else» или «если»… «то».

Читайте также:
Программа для того чтобы в играх было много денег

Блок Переключатель EV3

«Переключатель» может включать в себя 2 и более последовательности блоков. Эти последовательности называют вариантами. В зависимости от выбранной закладки определяется входное значение сенсора или какого-нибудь параметра. Исходя из входного параметра запускается только один из возможных вариантов.

Если нужно чтобы проверка вариантов выполнялась несколько раз, «Переключатель» нужно поместить в циклический блок.

«Прерывания цикла»

Это последний пятый значок во вкладке «Управление операторами». Он предназначен для завершения циклического блока. Имя прерывания выбирается в верхней части пиктограммы и больше никаких настроек нет.

Программный блок Прерывание цикла

«Прерывание цикла» можно использовать по условиям, можно прерывать цикл, находящийся в цикле, из другой подпрограммы или ветки. После остановки последовательности начнут выполняться блоки, расположенные после циклического.

Что такое палитра блоков Lego EV3

Источник: legoteacher.ru

Блок Математика в ev3

На этом уроке мы узнаем как выполнять простые математические операции с переменными в программах lego ev3 и научимся выводить информацию на экран блока ev3 Часто в программах для роботов ev3 необходимо производить математические операции с переменными и показаниями датчиков. Математические операции в программировании ev3 можно использовать для калибровки датчиков, для движения по черной линии с помощью регулятора.
Чтобы использовать математические операции в программах lego ev3 используется специальный красный блок Математика

блок математика в ev3

В блоке математика можно выбрать математические операции, нажав на кнопку плюс в правом нижнем углу блока.
Рассмотрим пример программы для ev3 , которая считает сумму двух переменных и выводит ее на экран блока ev3
Подробнее о работе с переменными в программировании lego ev3 можно познакомиться на уроке переменные в ev3
Создадим две переменные a и b через с помощью команды Добавить.
Запишем в эти переменные какие-нибудь значения например 10 и 20.
Теперь сложим эти две переменные, для этого добавим блоки переменных и выберем режим считывание
запись и считывание переменных в lego ev3
Добавим блок Математика и перетащим в него значения переменных в области a и b с помощью желтых проводов
работа с блоком математика в ev3
В итоге мы сложим обе переменных в программе ev3
сложение переменных в блоке математика ev3
чтобы воспользоваться значением математической операции, мы можем перетащить провод под знаком равно к любому блоку где можно использовать числовое значение. Например, запишем значение суммы в переменную summa. Для этого создадим переменную summa, переведем ее в режим записать и перетащим провод от блока математика в блок переменной
запись результата математической операции в переменную в ev3

Вывод информации на экран lego ev3

Значение переменныxи датчиков, текст, изображения можно выводить на экран блока ev3 в программе ev3. вывод информации на экран блока ev3 может быть полезным для анализа корректности работы сложных программ для ev3 а также для анимации обратной реакции робота. Для вывода информации на экран блока ev3 используется зеленый блок Экран
Для вывод значений переменных блок Экран нужно перевести в режим Проводной, кликнув на верхний левый угол блока и выбрав режим Проводной, в левом нижнем углу выберем режим Текс пиксели
блок экран ev3
Теперь чтобы вывести информацию на экран блока ev3, необходимо установить переменную в режим считывание и перетащить с помощью желтого провода ее значение в разъем текс блока Экран. Чтобы информация задержалась на экране какое-то время в конце программы поставим блока Ожидание
математика в lego ev3 сумма
На экране мы увидим сумму двух переменных

Вернуться к содержанию Перейти к теме Линейный регулятор ev3

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

Источник: itrobo.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru