На этом занятии мы рассмотрим прямолинейное движение и повороты с использованием тайм-модели..
Откройте TRIK Studio и создайте новый проект. Каждая программа или подпрограмма в проекте должна начинаться с блока "Начало". Выберите его из палитры и перетащите на рабочее поле. Для завершения программы используется блок "Конец". Выберите его и перетащите на поле диаграммы на некотором расстоянии от блока "Начало". После этого добавьте на рабочее поле блок "Моторы вперёд". Для поиска нужного блока можно ввести его название в строку поиска, расположенную в палитре над списком блоков. Для соединения блоков нажмите правую кнопку мыши на блоке "Начало" и нарисуйте линию от него до блока "Моторы вперёд". В случае успешного соединения блоков между ними появится стрелка чёрного цвета. Стрелка красного цвета означает то, что соединения нет. Соедините блок "Моторы вперёд " с блоком "Конец" таким же образом. В результате получится связанная друг с другом последовательность блоков.
Блок "Конец" расположен далеко от блока "Начало" для того, чтобы при добавлении блоков каждый раз не отодвигать его вправо. Блоки можно двигать как при помощи курсора мыши, так и при помощи курсорных клавиш. Для изменения масштаба поля диаграммы используйте сочетания клавиш Ctrl+ и Ctrl-
Нажмите кнопку "Выполнить" для запуска программы и переход в режим отладки. Тележка не сдвинулась с места. Почему? Блок "Начало" можно представить в качестве кнопки включения питания, а блок "Конец" - в качестве кнопки выключения питания. Таким образом, наша программа состоит из команд:
Робот исполняет простые команды очень быстро и после команды "Моторы вперёд" сразу выполняется команда выключить питание. Для исправления этой ситуации в программу необходимо добавить условие работы моторов, например, задержку при помощи таймера.
Прямолинейное движение
Выберите блок "Таймер" из палитры и перетащите его на стрелку после блока "Моторы вперёд". После этого сдвиньте этот блок на пару клеток вдоль стрелки. В случае успеха блок автоматически соединится с окружающими его блоками. Другой способ встраивания состоит в том, чтобы конец или начало имеющейся на диаграмме стрелки соединить с новым блоком, а недостающую связь нарисовать, удерживая правую кнопку мыши.
В ходе выполнения программы можно видеть движение тележки на максимальной скорости вперёд в течение одной секунды. Введите в поле ввода таймера задержку 3000, а в поле ввода скорости -50%. Теперь тележка будет двигаться назад с в течение трёх секунд со скоростью в два раза меньше.
После отладки программы её можно сделать в виде подпрограммы. Это даст возможность сохранять подпрограммы в одном библиотечном проекте для удобного дальнейшего использования. Давайте так и поступим. Выберите на палитре и перетащите на диаграмму блок "Подпрограмма". После его добавления на поле откроется диалог с предложение дать имя подпрограмме. Назовём её "Прямолинейное движение". После ввода имени подпрограмма добавится на палитру в список под списком блоков. Выполните двойной щелчок левой кнопкой мыши на пиктограмме подпрограммы (на диаграмме) для отображения её вкладки с диаграммой. После этого скопируйте из главной диаграммы программу и вставьте её на диаграмму подпрограммы. Для запуска и тестирования подпрограммы нужно открыть её вкладку и нажать кнопку "Выполнить". После успешной отладки подпрограммы её можно удалить из главной диаграммы проекта.
Прямолинейное движение тележки происходит по причине вращения валов моторов с одинаковой скоростью в одном направлении. При изменении этого условия при прочих равных условиях будет происходить увод тележки с прямолинейного движения или поворот. Существуют повороты следующих видов:
Для лучшей наглядности заставим тележку рисовать линию при своём движении. Для этого перед таймером добавьте блок "Опустить маркер"
Резкий поворот
Для выполнения резкого поворота необходимо выключить один из моторов тележки. Для поворота направо выключается правый мотор, налево - левый. Ниже дан один из примеров программы для осуществления резкого поворота налево.
Эта программа позволяет получить нужный результат, но с практической стороны она не совсем корректна, так как вместо остановки мотора мы его просто убрали из диаграммы. Если кто-то увидит такую программу, то он может решить, что на тележке установлен только один мотор. Приведём программу к корректному виду, добавив блок "Моторы стоп".
Теперь видно, что в модели используется два мотора, один из которых выключен.
Плавный поворот
Для совершения плавного поворота нужно указать для двух моторов разную величину скорости.
Чем меньше разница скоростей моторов, тем больше будет радиус поворота. Проверьте это, указав для второго мотора значение скорости 80%, а затем 10%.
Поворот на месте
Для поворота на месте необходимо задать одинаковую скорость работы обоих моторов, но в противоположных направлениях.
Для каждого вида поворота подберите время, за которое тележка совершает поворот на 360 градусов. Это пригодится для рисовании тележкой фигур, программирования движении в известном лабиринте и др.
Быстрее всего разворот тележки осуществляется при помощи поворота на месте, а медленнее всего - при плавном повороте.
Радиусом поворота называется радиус воображаемой дуги, по которой перемещается центр тяжести транспортного средства. Автомобили имеют разные габариты и на практике важно знать минимальный и максимальный габаритный радиус. По этим параметрам двухмоторная тележка имеет большое преимущество перед одномоторной с рулевым управлением. Сравните возможности поворота, например, гусеничного трактора и легкового автомобиля.
Во всех рассмотренных примерах условие работы моторов задаётся при помощи временной задержки. Модели, движение которых происходит в течение заданного времени (по таймеру), называются тайм-моделями. К преимуществам тайм-моделей относится простота и невысокая стоимость реализации. К недостаткам - зависимость пройденного пути от величины заряда питающей батареи. Для моделирования снижения заряда батареи установите скорость на 90% и запустите программу. Для более наглядной демонстрации можно использовать движение вперёд и назад. При движении вперёд задайте скорость равной 100%, а при движении назад - 90% и измените цвет линии на красный.
Помимо величины заряда питающей батареи на практике нужно учитывать внешние условия - характер поверхности, по которой движется устройство, препятствия, а также конструкцию и технические характеристики самого устройства. Может получиться так, что при повороте на ковре мощности двигателей не хватит и устройство либо вообще не повернётся, либо сможет повернуться на меньший угол.
После изучения базовых программ движения перейти к программированию сложных движений.