Для того чтобы программист и робот понимали друг друга, роботу необходимо уметь подавать некоторые сигналы. Они служат сообщением о том, что робот выполнил или не выполнил то или иное действие. В NXT-G такими сигналами служат звуковые сообщения, которые может воспроизводить встроенный динамик микроконтроллера. Сообщение также может быть выведено в виде текста или изображения на дисплее микроконтроллера. Для работы с дисплеем в NXT-G предусмотрен отдельный блок – Display (Дисплей) (рис. 129). Рис. 129 Блок для работы с дисплеем Этот блок имеет несколько режимов: - вывод текста – Text (Текст); - вывод готового изображения – Image (Изображение); - сброс настроек и вывод стандартного изображения – Reset (Сброс); - вывод пользовательского изображения – Drawing (Чертеж). Экран дисплея микроконтроллера NXT имеет размеры 100х64 пикселя (точки). Для вывода текста можно использовать восемь строк, номера которых указываются в настройках параметров блока Display (Дисплей). Строка не должна превышать 15 символов. Если Вы введете более длинную строку в поле ввода, на дисплей будет выведено 15 первых символов, остальные знаки игнорируются. Если перед началом вывода информации на экран Вы хотите его очистить, установите флажок Clear в настройках параметров команды. Чтобы вывести на экран готовое изображение, достаточно выбрать его из выпадающего списка в окне настройки параметров блока Display (Дисплей). Создать собственное изображение на экране можно двумя способами. Первый способ – режим Drawing (Чертеж). В этом режиме можно выбрать координаты экрана и поместить в них точку, прямую линию или окружность (параметр Type (Тип)). Начало системы координат дисплея располагается в левом нижнем углу (координаты (0;0)). Отсюда, исходя из размеров экрана, несложно определить координаты остальных его углов: - левый верхний – (0;63); - правый верхний – (99;63); - правый нижний – (99;0). Вы можете создавать более сложные изображения, поместив в программе подряд несколько блоков Display (Дисплей). Изображение может быть динамическим, т.е. изменяться во время выполнения программы, если подключить шины к концентратору данных и передавать по ним новые значения координат. Запомните, что при выводе готового изображения в параметре Position (Расположение) указываются координаты его левого нижнего угла. Напишем программу PrGraph1.rbt вывода на дисплей прямой линии, которая разделит его вертикально на две равные части. Для этого необходимо задать в параметрах команды координаты начальной и конечной точек прямой (рис. 130). Рис. 130 Настройка параметров команды Display Выполняя данную программу, состоящую всего из одной команды, микроконтроллер очистит экран дисплея, а затем выведет на него изображение вертикальной прямой линии.
Примечание: Когда Вы создаете сложное изображение, выводимое при помощи нескольких команд, во всех блоках, кроме первого, необходимо снять флажок Clear (Очистить). Если этого не сделать, экран будет очищаться перед выводом каждого последующего фрагмента, стирая ранее созданное изображение. Существует еще один способ создания собственного изображения на экране дисплея – в режиме Image. Ранее было отмечено, что в этом режиме можно добавлять на экран готовые изображения. Однако среда NXT-G предоставляет возможность самостоятельно создать изображение при помощи редактора изображений ImageEditor (Редактор изображений). Готовое изображение автоматически появиться в конце списка параметра File в командном блоке Display (Дисплей). Открыть редактор можно в главном меню среды NXT-G (рис. 131). Рис. 131 Открытие ImageEditor После этого появится окно редактора, в котором можно создавать изображения по точкам (рис. 132). Рис. 132 Интерфейс ImageEditor Все примитивы во время создания и выделения отображаются оранжевым цветом. Поскольку дисплей блока NXТ черно-белый, редактор не поддерживает цветные палитры. Изображение можно создавать при помощи инструментов Pencil (Карандаш), Line (Линия), Ellipse (Эллипс), Rectangle (Прямоугольник), Fill (Заливка области). К изображению можно добавлять надписи при помощи инструмента Text. Инструмент Erase служит для стирания части изображения, а SelectforClipboard (Выбрать для копирования в буфер обмена) – прямоугольная рамка выделения. Выделенный фрагмент изображения можно скопировать и вставить в любое место рабочей области. Эта функция может быть удобной при создании симметричных или повторяющихся частей изображения. Кнопки редактирования располагаются на правой панели, сразу под миниатюрами рабочей области и буфера обмена. Слева присутствуют кнопки Undo/Redo (Отмена/Вернуть отмененное). Регулировать толщину кисти позволяют три квадрата, расположенные под панелью инструментов. Помимо ручной отрисовки редактор поддерживает импорт готовых изображений из стандартной коллекции. Для этой цели служит кнопка Open. Кнопка Save позволяет сохранить готовое изображение и добавить его к списку изображений блока Display (Дисплей). Редактор поддерживает форматы ric, jpg, jpeg, bmp, png. Очистить холст можно, нажав на кнопку Clear (Очистить), Help (Помощь) – получение справки, а Close (Закрыть) – закрытие окна редактора. Создадим собственное изображение в ImageEditor и заставим робота показывать его на дисплее. Пусть этим изображением будет бьющееся сердце, поскольку микроконтроллер, по сути, и есть сердце робота. Похожая программа предложена разработчиками LegoMindstormsNXT для их робота AlphaRex. Напишем собственную программу для любого из собранных у Вас на данный момент роботов. Идея проста. Нам необходимо два изображения сердца – одно побольше, другое – поменьше. Когда Вы запустите в программе их циклическую смену, будет казаться, что у робота действительно бьется сердце.
Рис. 133 Изображение сердца в ImageEditor Сохраните полученное изображение с именем Heart1, нажав на кнопку Save. Далее необходимо нарисовать еще одно сердце, но меньшего размера. Постарайтесь при этом оставить без изменений его форму. Сохраните второе изображение с именем Heart2 и закройте редактор. Теперь составим программу. Для этого поместите в рабочую область подряд два блока Display (Дисплей), заключив их в рамку команды Loop (Цикл). Цикл необходим для того, чтобы изображения сменяли друг друга все время, пока работает программа. У Вас должна получиться структура, показанная на рисунке 134. Рис. 134 Программа «Бьющееся сердце» Установите в первом блоке Display настройки так, как показано на рисунке 135. Рис. 135 Настройка блока Display У второй команды Display настройки будут аналогичны первой, но вместо Heart 01 необходимо указать в параметре File (Файл) изображение Heart 02. В параметрах цикла установите бесконечное число повторений. Сохраните программу с именем PrGraph2.rbt. Загрузите полученную программу на микроконтроллер NXT и запустите, чтобы проверить ее работу. Как ни странно, программа не работает! На экране Вы видите статическое изображение сердца, которое не изменяется. В чем же дело? Все дело в том, что программа работает правильно, но Вы не видите этого, потому что смена изображений происходит слишком быстро. Добавим в программный код два блока ожидания Wait (Ожидание), установив в параметрах ожидание истечения времени в 1 секунду. Окончательный вариант программы представлен на рисунке 136. Рис. 136 Вариант программы «Бьющееся сердце» Загрузите этот вариант программы на микроконтроллер NXT и убедитесь, что он работает.
Практическая работа № 9 – «Эмоциональный робот»: Составьте программу движения для робота, в которой он сразу после ее запуска покажет на экране улыбающееся лицо. Пусть робот движется вперед до момента появления препятствия в 20 сантиметрах от него. Как только робот «видит» препятствие, изображение на дисплее сменяется грустным лицом, и робот поворачивает на 90 градусов влево. Если на роботе нажать на кнопку датчика касания, на дисплей выводится изображение сердитого лица, и робот останавливается. Комментарии к заданию Заранее подготовьте необходимые Вам изображения при помощи встроенного графического редактора. Они не обязательно должны быть детально прорисованными, достаточно схематических изображений. Главное, они должны выражать нужную эмоцию. Воспользуйтесь переключателем Switch при программировании действий робота в зависимости от тех или иных условий. Чтобы робот продолжал движение и изменял «выражение лица» после каждого поворота на улыбающееся, поместите блоки в цикл. Цикл лучше всего использовать с параметром Sensor и настроить выход из цикла по нажатию кнопки не датчике касания.
Практическая работа № 10 – «Измерение расстояния»: Составьте программу, которая будет измерять расстояние от робота до препятствия во время его движения и выводить показания на экран дисплея. Как только до объекта останется 0 см, на экран должна выдаваться надпись «Авария!» и робот останавливается.
Практическая работа № 11 – «Правила передвижения»: По правилам дорожного движения автомобили обязаны обозначать повороты и остановки специальными сигналами. Составьте программу для робота-автомобиля, которая будет показывать стрелкой на экране направление движения робота. Комментарии к заданию Перед поворотом стрелка должна изменять направление, указывая, в какую сторону будет совершен поворот. Если робот останавливается, на экране должно быть нарисовано два закрашенных прямоугольника, обозначающих включенные фары автомобиля. Вы можете воспользоваться готовыми изображениями стрелок. Этофайлы Forward, Backward, Left и Right. |
Поделиться с друзьями: