Программирование моторов Lego Mindstorms EV3

Составитель:

Вкладка «Действия»        1

Блок «Большой мотор»        1

Блок «Рулевое управление»        4

Блок «Независимое управление моторами»        6

Ожидание        6

Повтор одинаковых действий        7

Практические задания        10

Задание 1. Включение моторов        10

Задание 2. Включение моторов и ожидание        10

Задание 3. Остановка моторов        10

Задание 4. Движение по квадрату        10

Задание 5. Движение с препятствиями        11

Задание 6. Движение двумя моторами рулевым управлением        11

Задание 7. Движение рулевым управлением        12

Задание 8. Движение одним мотором при независимом управлении моторами        12

Задание 9. Движение двумя моторами        12

Задание 10. Движение по восьмерке        13

Итоговое (зачетное) задание: Чертежник        13

Задание 1:        13

Задание 2:        15

Наиболее часто используемой функцией робота является «Движение». Двигаться может весь робот (движение тележки), двигаться могут части робота: движение манипулятора (клешня, рука), движение сенсора.

Вкладка «Действия»

НЕ нашли? Не то? Что вы ищете?

Простое движение одним мотором

Блок «Средний мотор»

Блок «Большой мотор»

Простое движение двумя моторами

Блок «Рулевое управление»

Движение с синхронизацией моторов

Блок «Независимое управление моторами»

Блок «Большой мотор»

Блоки «Средний мотор» и «Большой мотор» идентичны, разберем на примере блока «Большой мотор»

1 – Выбор порта

2 – Выбор режима

3 – Вводы

Режимы:


Режим

Пиктограмма

Описание

Используемые вводы

Включить

Запускает мотор в действие. Мотор будет работать, пока его не остановят или позднее не заменят другим блоком в программе, или пока программа не закончиться.

Мощность

Выключить

Используется для остановки мотора.

Тормозить в конце

Включить на количество секунд

Включает мотор на количество секунд, указанное во вводе «Секунды», а затем выключает его.

Мощность

Секунды

Тормозить в конце

Включить на количество градусов

Включает мотор на количество градусов, указанное во вводе «Градусы», а затем выключает его.

Мощность

Градусы

Тормозить в конце

Включить на количество оборотов

Включает мотор на количество оборотов, указанное во вводе «Обороты», а затем выключает его.

Мощность

Обороты

Тормозить в конце


Ввод

Тип

Допустимые значения

Примечания

Мощность

Числовое значение

-100 – 100

Уровень мощности мотора, обеспечивающий вращение мотора в разных направлениях.

1 – положительная мощность

2 – отрицательная мощность

Скорость вращения мотора примерно пропорциональна указанному уровню мощности, хотя на скорость вращения также влияет размер применяемой к мотору нагрузки.

Тормозить в конце

Логическое значение

Истина/Ложь

Если «Истина», мотор немедленно останавливается. Мотор будет удерживаться в остановленном положении, пока другой блок мотора не запустит этот мотор, или пока программа не закончится.

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

Секунды

Числовое значение

? 0

Время движения в секундах. Для задания не целых значений используется десятичная точка.

Градусы

Числовое значение

Любое число

Количество движений в градусах. 360 градусов = 1 оборот.

Расстояние, которое пройдет робот, зависит от ввода «Градусы». Однако расстояние также зависит от диаметра используемых приводных колес и прочих физических факторов. Встроенные датчики оборотов в моторах измеряют количество оборотов в ступицах мотора.

Обороты

Числовое значение

Любое число

Количество движений в оборотах.


Блок «Рулевое управление»

Используется для роботизированных транспортных средств, в которых имеются два больших мотора, где один мотор управляет левой (1) стороной транспортного средства, а второй мотор управляет правой (2) стороной. Блок «Рулевое управление» управляет обоими моторами одновременно.

1 – выбор портов (В – левый, С - правый)

2 – выбор режима

3 – вводы

Для блока «Рулевое управление» добавляется ввод «Рулевое управление».

Ввод

Тип

Допустимые значения

Примечания

Рулевое управление

Числовое значение

-100 – 100

Направление рулевого управления.

0 - движение прямо;

>0 – движение вправо;

<0 – движение влево.

Блок «Рулевое управление» заставляет вашего робота поворачивать благодаря вращению двух моторов на разных оборотах. Для очень крутых поворотов один из моторов будет двигаться в обратном направлении.

Данная программа заставит робота делать повороты по дуге вправо, используя значение «Рулевое управление»мощности от 25 до 50%. Поворот будет продолжаться, пока левый мотор (наружный и более быстрый) не сделает поворот ровно на 1000 градусов, затем робот остановится.

Вводы «Градусы» и «Обороты» измеряет количество вращений более быстрого мотора, а не изменяет направление робота при повороте. Изменение направления робота зависит от диаметра колес, расстояния между сдвоенными колесами и прочих факторов.


Блок «Независимое управление моторами»

Используется для действий поворота, моторам можно задать разные мощности или разные направления.

1 – Выбор портов

2 – Выбор режима

3 – Вводы

Для блока «Независимое управление» добавляется  2 ввода: «Мощность на левый мотор» и «Мощность на правый мотор».

Ожидание

Иногда бывает необходимо вставить задержку между двумя выполняющимися действиями:

    Подождать, пока человек отреагирует на действие Подождать, пока датчики будут готовы к работе Подождать, пока тележка проедет какое-то расстояние

Блок «Ожидание» (вкладка «Управление операторами»)

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

1 – Выбор режима

2 – Вводы

Режимы:

«Время» для ожидания в течение указанного времени в секундах.

Тип датчика - «Сравнение» для ожидания, пока датчик достигнет определенного значения.

Тип датчика - «Изменить» для ожидания, пока датчик достигнет определенного значения.

Повтор одинаковых действий

Иногда в программе возникает необходимость повторить набор одинаковых операций друг за другом несколько раз:

Блок «Цикл» (вкладка «Управление операторами»)

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

1 – Выбор режима

2 – Вводы

3 – Вывод «Установка подсчета»

4 – Имя цикла

Блоки, заключенные в теле цикла выполняются до тех пор пока условие не станет истинным.

Режимы

Неограниченный

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

Установка подсчета

Указывается количество повторения блоков в цикле.

Время

Время измеряется от начала цикла.

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

Логическое значение

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



Практические задания

Задание 1. Включение моторов

Изучить, что произойдет, если включить программу и закончить ее.

Задание 2. Включение моторов и ожидание

!!!Цель эксперимента – показать, что функция включения моторов никак не определяет сколько будет включен мотор, сколько колеса тележки проедут.

Также он показывает, что при завершении программы моторы явно не останавливаются – вместо этого с них снимается энергия и моторы продолжают двигаться по инерции.

Задание 3. Остановка моторов

В чем разница в остановках робота и почему?

Задание 4. Движение по квадрату

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

Нужно ли останавливать двигатели перед поворотом?

Что произойдет, если во всей программе теперь изменить мощность на моторах в два раза?

Задание 5. Движение с препятствиями

Запрограммируйте робота таким образом, чтобы он проехал 30 см. (Лист альбомной бумаги). На сколько оборотов или градусов необходимо повернуть колеса тележки?

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

!!!!Цель эксперимента  - показать, что выполнение программы блокируется в ожидании поворота двигателей. Это важно помнить, при движении робота по поверхности с препятствиями или при выполнении поворотов.

Запрограммировать робота ехать 5 секунд, и в то же время руками остановить двигатели – искусственно создать ситуацию, когда робот натолкнулся на препятствие и колеса провернуться не могут.

!!!Цель эксперимента – показать, что не смотря на то, что колеса заблокированы и не могут двигаться, программа продолжит выполняться после истечения 5 секунд.

Задание 6. Движение двумя моторами рулевым управлением

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

Изменяя мощность, подаваемую на моторы, посмотрите, как это влияет на скорость движения робота (Мощность: 25%, 50%, 100%).

За счет чего будет задаваться движение назад: за счет управления мощностью или за счет управления направлением угла поворота?

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

Задание 7. Движение рулевым управлением

Изучите, как рулевое управление влияет на движение тележки (0, 25, 50, 100, -50, -25, -100).

Задание 8. Движение одним мотором при независимом управлении моторами

Запрограммировать только один мотор у тележки с помощью блока «Независимое управление моторами».

Понаблюдать, как тележка двигается в зависимости от того какой мотор мы контролируем.

Понаблюдать, как тележка двигается в зависимости от того какое направление движения мотора (вперед или назад) мы выбираем:

    Изменять направление движения через указание отрицательной мощности и через отрицательное значение угла поворота:
      левый мотор, движение вперед правый мотор, движение вперед левый мотор, движение назад (отрицательная мощность) правый мотор, движение назад (отрицательный угол)

Задание 9. Движение двумя моторами

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

Задание 10. Движение по восьмерке

Составьте программу для того, чтобы робот двигался по сторонам восьмерки.

Как сделать плавный разворот?

Одной из трудностей в этой программе является возврат в то же место, откуда робот начал двигаться.

Итоговое (зачетное) задание: Чертежник

Составить программу, выполняя которую робот начертит следующую фигуру:

Задание 1:


Задание 2: