Введение:
В состав конструктора 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)
Рис. 8
Задача №7: необходимо написать программу, останавливающую робота, столкнувшегося с препятствием.
Из датчика касания давайте соберем небольшой бампер, который будет нам сигнализировать о том, что наш робот столкнулся с препятствием. Ниже приведены подробные инструкции для сборки, как из домашней, так и из образовательной версии конструктора Lego mindstorms EV3. Можете поэкспериментировать и придумать собственный вариант конструкции.
Lego mindstorms EV3 home
Lego mindstorms EV3 education
Получившийся элемент закрепим на передней балке нашего робота и соединим датчик касания с портом «1» модуля EV3.
Lego mindstorms EV3 Home
Lego mindstorms EV3 Education
Конструкция готова! Приступим к созданию программы. По условию задачи: робот должен двигаться вперед, пока не наткнется на препятствие. В этом случае датчик касания будет нажат! Для решения снова воспользуемся программным блоком «Ожидание».
Решение:
- Начать прямолинейное движение вперед (Рис. 9 поз. 1).
- Ждать, пока датчик касания не будет нажат (Рис. 9 поз. 2).
- Прекратить движение вперед (Рис. 9 поз. 3).
Рис. 9
Для решения следующей задачи нам понадобится программный блок «Цикл» Оранжевой палитры.
Задача №8: необходимо написать программу, заставляющую робота двигаться вперед, при наезде на препятствие — отъезжать назад, поворачивать вправо на 90 градусов и продолжать движение вперед до следующего препятствия.
Подсказка: напишите и протестируйте программу движения — отъезда — поворота, а затем поместите эти блоки внутрь программного блока «Цикл».
Решение Задачи №8
- Включаем моторы для прямолинейного движения вперед (Рис. 10 поз.1)
- Ожидаем нажатия датчика касания (Рис. 10 поз.2)
- Выключаем моторы (Рис. 10 поз.3)
- Отъезжаем немного назад (Рис. 10 поз.4)
- Расчитываем значения параметра для поворота робота вправо на 90 градусов (диаметр колес робота равен 56 мм (образовательная версия конструктора)) (Рис. 10 поз.5)
- Поворачиваем вправо на 90 градусов (Рис. 10 поз.6)
- Пункты 1 — 6 повторяем в бесконечном цикле (Рис. 10 поз.7)
Рис. 10
Источник: robot-help.ru
Программные блоки циклов и алгоритмических структур
В оранжевой закладке палитры редактора Lego EV3 находятся блоки «Управление операторами». Это алгоритмические структуры, без которых невозможно создавать программы. С их помощью происходит запуск кода, переключение, прерывание, зацикливание и прочее. Еще их называют блоками последовательности действий. В верхней части пиктограмм расположена узкая оранжевая горизонтальная полоса.
Всего во вкладке «Управление операторами» находится пять иконок слева направо:
- Начало
- Ожидание
- Цикл
- Переключатель
- Прерывание
«Начало»
Он всегда расположен в начале и служит для запуска программы на выполнение. На пиктограмме изображена стрелка зеленого цвета. Без него код работать не будет и другие значки не будут активными. В окне редактора если значка «Начало» нет или он не соединен с другими, остальные фрагменты программы выглядят немного замутненными.
Если добавить еще одну или несколько пиктограмм «Начало» в окно редактора Lego, то можно создать несколько параллельных программ, работающих независимо друг от друга. При отладке каждую подпрограмму можно запустить отдельно. Но при запуске на выполнение все параллельные ветки работают одновременно и автономно.
«Ожидание»
На значке нарисованы песочные часы. С помощью ожидания можно ждать наступления какого-нибудь события. Если это событие наступит, то происходит переход программы к другой части.
Всего есть тринадцать вкладок с типами сенсоров, кнопками, счетчиками и т.д. в блоке ожидания EV3:
- Кнопки управления модулем
- Датчик цвета
- Гироскопический датчик
- Инфракрасный датчик
- Вращение мотора
- Температурный датчик
- Таймер
- Датчик касания
- Ультразвуковой датчик
- Счетчик электроэнергии
- Датчик звука NXT
- Обмен сообщениями
- Время
У каждой закладки есть режимы сравнения, изменения или обновления, которые имеют свои подпункты. В целом это мощный инструмент, позволяющий создавать сложные программы, зависящие от конкретных условий.
«Цикл»
Для того чтобы повторить нужную последовательность кода определенное число раз при соблюдении нужных условий в редакторе Lego Education EV3 предусмотрен программный блок. Фактически он представляет собой контейнер с визуальным кодом. Проверка условий происходит после однократного выполнения кода. Конструкция «Цикл» является алгоритмической структурой типа «while» с постусловием.
Фрагмент программы внутри контейнера будет повторяться. Блоки, не входящие в него повторяться не будут. По завершению произойдет переход к следующим блокам, которые не входят в цикл. Иконка цикла расположена третьей по счету слева во вкладке «Управление операторами». Управление режимами находится в правом нижнем углу пиктограммы.
Всего есть шестнадцать закладок. Тринадцать из них такие же, как и у блока «Ожидание». Добавлены еще три пункта:
- Неограниченный
- Подсчет
- Логическое значение
В левой части иконки расположен вывод «Параметры цикла». С его помощью можно выполнить подсчет числа повторений, времени, логического значения, типов сравнения, порогового значения и прочее. Введенное значение зависит от заданного режима или от переданного по шине данных значения от выводов других блоков.
Циклы можно вкладывать друг в друга. Если в конструкцию добавляются фрагменты, то размер значка увеличивается. Также размер пиктограммы можно изменять с помощью маркеров, находящихся на границах изображения. Это очень похоже на изменения размера картинки в документе Word.
«Переключатель»
Находится четвертым слева в оранжевой закладке алгоритмических структур. По сравнению с циклом у него на одну вкладку меньше. Отсутствует пункт «Неограниченный». Он соответствует конструкции «if»… «else» или «если»… «то».
«Переключатель» может включать в себя 2 и более последовательности блоков. Эти последовательности называют вариантами. В зависимости от выбранной закладки определяется входное значение сенсора или какого-нибудь параметра. Исходя из входного параметра запускается только один из возможных вариантов.
Если нужно чтобы проверка вариантов выполнялась несколько раз, «Переключатель» нужно поместить в циклический блок.
«Прерывания цикла»
Это последний пятый значок во вкладке «Управление операторами». Он предназначен для завершения циклического блока. Имя прерывания выбирается в верхней части пиктограммы и больше никаких настроек нет.
«Прерывание цикла» можно использовать по условиям, можно прерывать цикл, находящийся в цикле, из другой подпрограммы или ветки. После остановки последовательности начнут выполняться блоки, расположенные после циклического.
Что такое палитра блоков Lego EV3
Источник: legoteacher.ru
Блок Математика в ev3
На этом уроке мы узнаем как выполнять простые математические операции с переменными в программах lego ev3 и научимся выводить информацию на экран блока ev3 Часто в программах для роботов ev3 необходимо производить математические операции с переменными и показаниями датчиков. Математические операции в программировании ev3 можно использовать для калибровки датчиков, для движения по черной линии с помощью регулятора.
Чтобы использовать математические операции в программах lego ev3 используется специальный красный блок Математика
В блоке математика можно выбрать математические операции, нажав на кнопку плюс в правом нижнем углу блока.
Рассмотрим пример программы для ev3 , которая считает сумму двух переменных и выводит ее на экран блока ev3
Подробнее о работе с переменными в программировании lego ev3 можно познакомиться на уроке переменные в ev3
Создадим две переменные a и b через с помощью команды Добавить.
Запишем в эти переменные какие-нибудь значения например 10 и 20.
Теперь сложим эти две переменные, для этого добавим блоки переменных и выберем режим считывание
Добавим блок Математика и перетащим в него значения переменных в области a и b с помощью желтых проводов
В итоге мы сложим обе переменных в программе ev3
чтобы воспользоваться значением математической операции, мы можем перетащить провод под знаком равно к любому блоку где можно использовать числовое значение. Например, запишем значение суммы в переменную summa. Для этого создадим переменную summa, переведем ее в режим записать и перетащим провод от блока математика в блок переменной
Вывод информации на экран lego ev3
Значение переменныxи датчиков, текст, изображения можно выводить на экран блока ev3 в программе ev3. вывод информации на экран блока ev3 может быть полезным для анализа корректности работы сложных программ для ev3 а также для анимации обратной реакции робота. Для вывода информации на экран блока ev3 используется зеленый блок Экран
Для вывод значений переменных блок Экран нужно перевести в режим Проводной, кликнув на верхний левый угол блока и выбрав режим Проводной, в левом нижнем углу выберем режим Текс пиксели
Теперь чтобы вывести информацию на экран блока ev3, необходимо установить переменную в режим считывание и перетащить с помощью желтого провода ее значение в разъем текс блока Экран. Чтобы информация задержалась на экране какое-то время в конце программы поставим блока Ожидание
На экране мы увидим сумму двух переменных
Вернуться к содержанию Перейти к теме Линейный регулятор ev3
Комментарии ( 0 )
Нет комментариев. Ваш будет первым!
Источник: itrobo.ru