Цикл со счётчиком. Передача данных между блоками

Разберём следующий пример.

Пример 4.2. Написать программу движения робота с ускорением.
Для начала напишем программу движения робота с постоянной скоростью:
  • Повтори 20 раз:
  • Вперёд
В настройках блока Move отметьте Coast (без торможения в конце выполнения блока). В поле Duration оставим значение 1Rotation.
Проверьте работу программы. Робот движется прямо с постоянной скоростью.
Для создания ускорения будем использовать передачу данных из цикла на блок движения. Очевидно, в нашем случае ускорение предполагает постепенное увеличение скорости робота, то есть увеличение мощности мотора.
Изменим программу.
В настройках блока Loop включите флажок Show Counter (Показать Счётчик). Обратите внимание на то, как изменился внешний вид цикла: появился разъём Loop Count.
Включение отображения счётчика цикла (слева) и доступ к нему (справа)

Откройте концентратор данных блока Move, щёлкнув на кнопке в левой нижней части блока:

Концентратор данных в свёрнутом состоянии

В результате откроются входные (расположенные на левой стороне) и выходные (расположенные на правой стороне) разъёмы, к которым можно подключать шины данных от разъёмов других блоков. Таким способом можно передавать данные внутри программы на NXT-G без фактического использования переменных.

Концентратор данных в раскрытом состоянии

Соедините шиной разъём счётчика цикла и разъём Power (Мощность) блока Move (при наведении указателя мыши на разъём появляется соответствующая всплывающая подсказка). Чтобы сделать соединение, щёлкните левой кнопкой мыши на начало, проведите мышь в конец пути и щёлкните ещё раз; можно делать дополнительные щелчки по ходу траектории в местах её желаемых сгибов. В поле Durationукажите Unlimited (без ограничения длительности). Сверните концентратор данных щёлкните по выпадающей панели блока так, как будто хотите её свернуть. Все разъёмы, к которым не подходят шины, исчезнут. Этот трюк может заметно уменьшить площадь, занимаемую программой.

В результате программа примет вид:
Движение робота с ускорением

Проверьте её работу.

Для того чтобы ускорение было более наглядным, добавьте в цикл небольшую задержку:
Движение робота с ускорением с задержкой времени выполнения для большей наглядности

Пример 4.3. Вывод информации на экран блока NXT.

Проверим, что на самом деле поступает из цикла на вход блока Move. Для этого разработаем упрощённую программу, в которой значение счётчика цикла выводится на экран блока NXT. Напомним, что для вывода используется блок Display из панели Common.
Мы собираемся выводить на экран числовую информацию, поэтому её нужно вначале преобразовать к текстовому типу. Делается это при помощи блока Number to Text панели Advanced.
Доступ к блоку Number to Text панели Advanced

Получаем следующую схему программы:

  • в настройках блока Loop значение счётчика устанавливаем равное 10;
  • значение счётчика цикла передаём на преобразователь "Число → Текст";
  • полученный текст подаём на вход блока Display;
  • делаем задержку, чтобы успеть рассмотреть значение на экране;
  • после цикла ставим задержку до нажатия на кнопку Start, чтобы рассмотреть последнее выведенное на экран значение.
Пример программы приведен на рисунке.
Обратите внимание на то, что шины разных данных окрашены по-разному. Всего в NXT-G используются три типа данных, каждому из них соответствует своя окраска:
  • числовой тип данных - жёлтый цвет;
  • текстовый тип данных - красный цвет;
  • логический тип данных - зелёный цвет.
Вывод значений счётчика на экран

На рисунке приведены настройки последнего блока:

Настройки блока Wait