Глава 4. Программирование в NXT-G



Введение

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

Подходя к программированию NXT, первым делом обратим внимание на официальный язык NXT-G, включенный в пакет Lego Mindstorms NXT, поставляемый вместе с конструктором. NXT-G — это графический язык программирования, в котором программы можно создавать с помощью нажатия клавишей мыши и перетаскивания блоков кода на экране (G — graphical, графический). NXT-G довольно прост в использовании, но требует больших ресурсов компьютера и занимает много памяти. Далее рассмотрим еще две среды программирования NXT, которые работают быстрее, но могут оказаться менее доступны читателю. 

В этой главе, во-первых, исследуем интерфейс NXT-G, который играет важную роль при создании программы. Во-вторых, обсудим некоторые базовые понятия языка NXT-G, которые необходимы для успешного программирования. В-третьих, рассмотрим готовые примеры из Robo Center.

Знакомство с NXT-G

При запуске Lego Mindstorms NXT появляется основной экран (рис. 4.1), откуда можно перемещаться к другим разделам. Начинающим настоятельно рекомендуем просмотреть краткие интерактивные руководства — Getting Started и Software Overview.

Чтобы увидеть интерфейс NXT-G и начать с ним работу, необходимо создать новую программу или открыть существующую. 

 

Рис. 4.1. Стартовое окно Lego Mindstorms NXT

Замечание. Предполагаем, что у читателя уже установлено программное обеспечение, поставляемое вместе с NXT-набором, и успешно проведено USB- или Bluetooth-соединение между компьютером и NXT. В случае несоответствия или сбоев операционной системы микроконтроллера следует воспользоваться разделом главного меню Tools → Update NXT Firmware.

Новая программа

Чтобы создать новую программу, напишите её название в рамке под словами Start New Program и затем нажмите кнопку Go>>. Чтобы открыть существующую программу, к которой вы недавно обращались, просто выберите программу из ниспадающего меню под словами Open Recent Program и затем нажмите кнопку Go>>.

Поскольку изначально не существует программы, напишите First Program в поле под словами Start New Program и нажмите кнопку Go>>, чтобы создать новую программу с именем Test Program.

Замечание. Можно создать новую программу, выбрав FileNew, нажимая при этом сочетание клавиш Ctrl—N (для Windows) или CMD—N(для Mac).

Интерфейс NXT-G

Интерфейс NXT-G появляется, как только создана или открыта программа (Robo Center уменьшает обзор интерфейса, можно временно скрыть его). В результате получаем окно программы, состоящее из четырех основных прямоугольников: 1) рабочее поле программы, на котором расположен командный центр; 2) палитра команд; 3) окно настройки параметров команд; 4) окно просмотра общего вида программы (рис. 4.2). Кроме того, сверху находится главное меню и пиктораммы переключения интерфейса среды, в частности пиктограмма оранжевой трехмодульной балки, по которой можно вернуться в Robo Center. Стрелкой на рис. 4.2 показана пиктограмма перехода к полной палитре команд. 

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

 

Рис. 4.2. Интерфейс NXT-G.

В окне настройки параметров команд указывается, к какому порту подсоединено устройство, а также в каком диапазоне значений и в каком режиме оно работает (для всех устройств по-разному). Внесенные параметры в виде миниатюрных пиктограмм отображаются на блоках команд в программе. 

Рассмотрим пиктограмму блока управления моторами «Move block» (рис. 4.3), параметры которого приведены в окне настройки (рис. 4.2).

Буквы в правом верхнем углу блока

(1) показывают, какие из портов устрой ства NXT будут контролироваться. Пик-

Рис. 4.3. Пиктограмма блока управления моторами. тограмма «стрелка» (2) дает направление движения робота. Пиктограмма «индика-

тор мощности» (3) показывает уровень

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

У большинства блоков имеются концентраторы данных, которые по умолчанию спрятаны. Для извлечения концентратора достаточно щелкнуть мышкой по кнопке в левой нижней части блока, помещенного в рабочую область (рис. 4.4). 

 

Рис. 4.4. Извлечение концентратора данных.


Как правило, шина данных создается между двумя концентраторами. На подключаемых разъемах один из них должен возвращать данные, а другой — принимать их. Если шину подключить неправильно, на несовместимые разъемы, то она будет выглядеть поврежденной, в виде пунктирной линии. Вот примеры подключении шин данных (рис. 4.5): (A) — входной разъем,

(B) — выходной разъем,

(C) — числовая шина данных (желтая),

(D) — логическая шина данных (зеленая),

(E) — текстовая шина данных (оранжевая), (F) — поврежденная шина данных (серая).

Ветвления

 

Есть еще несколько специфических блоков, которые стоит упомянуть. Первый из них «Блок принятия решений», или «Ветвление».   Рис. 4.6. Ветвления: по датчику нажатия (слева), по логическому или числовому значению (справа). В приведенном примере (рис. 4.6, слева) в зависимости от состояния датчика нажатия (1) выполняется либо верхняя ветвь (2 — если нажат), либо нижняя (3 — если отпущен). Любое ветвление с помощью окна настройки параметров можно перенастроить на другое условие. Например, можно принимать решение на основании некоторого значения (рис. 4.6, справа), подаваемого на специальный разъем. В этом случае значение должно поступить по логической или числовой шине данных от какого-то другого блока. 

Рис. 4.5. Типы шин данных между концентраторами.

Ветвление может отображаться в двух режимах: 1) когда видны обе ветви (и «Да», и «Нет»), как на рис. 4.6; 2) с отображением только одной из выбранных ветвей, как на рис. 4.7. Это может быть полезно для экономии места на экране, которого в NXTG катастрофически не хватает. Режим определяется установкой флажка «Flat view» в левой нижней части окна настройки параметров.

Циклы

 

Рис. 4.7. Сокращенное отображение ветвления.


Следующий блок, с которым стоит познакомиться, это цикл. Как правило, в NXT-G используются циклы либо с параметром, либо с постусловием.

 

Рис. 4.8. Пиктограмма бесконечного цикла (слева), цикл по датчику освещенности (справа).

 В качестве условия в правом нижнем углу пиктограммы (1) указывается режим повторений, в примере слева цикл работает бесконечно (рис. 4.8). Кроме того, циклы бывают с фиксированным числом повторений, по значению таймера, значению датчика, значению переменной.

В приведенном примере (рис. 4.8, справа) моторы B и C работают до тех пор, пока на датчике освещенности на 3-м порту не будет показано значение больше 50. При этом включен режим вывода значения счетчика повторений, и программист может подсоединить шину данных к разъему в левом нижнем углу пиктограммы цикла. 

Переменные

Для использования переменных в NXT-G предусмотрен блок

Variable, находящийся в палитре Data (рис. 4.9).

три переменных трех типов (1): логика, число и текст. Программист может создать свою переменную, воспользовавшись пунктом главного меню Edit → Define Variables. Рис. 4.9. Пиктограмма переменной.

К единственному разъему (1) у него можно подключить шину данных, по которой будет передаваться значение (рис. 4.10). 

Направление передачи на чтение или запись (2) и значение переменной (3) настраиваются в пара-

метрах блока. По умолчанию присутствуют всего 

 

Рис. 4.10. Настройка типа переменной.

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

Robo Center

Раздел Robo Center содержит четыре модели, разработанных компанией Lego специально для пользователей NXT. Перейдя к любой из них, можно получить исчерпывающее руководство по сборке и составлению простейших программ для этих моделей. Эти разделы стоит пройти любому счастливому обладателю конструктора, поскольку в них не только можно найти неплохой самоучитель, но понять некоторые принципы, заложенные создателями Lego Mindstorms NXT в свое детище. 

Собирая модель по инструкции, не забудьте раскрыть окно Robo Center на весь экран, чтобы лучше видеть мелкие детали и соединения.


Дата добавления: 2019-02-22; просмотров: 1015; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!