1. Циклы программирования LEGO MINDSTORMS NXT
Вовремя написании команд, появляется потребность в циклическом повторении группы команд и именно с этой целью используют языковую конструкцию цикл, которой в NXT-G является блок Loop.
Рис. 1.1 Блок Loop в меню Flow и пример его использования
Следует с аккуратностью размещать блоки, которые сами обладают цикличностью, это Move, Sound и также другие.
При программировании цикла, следует заранее знать в каком случает он прекратит свою работу, так как завершение цикла происходит по разным причинам. Непосредственно в NXT-G существуют способы выхода из цикла, доступные в поле Control:
1. Forever – бесконечно;
2. Sensor – по срабатыванию датчика;
3. Time – через определенное время;
4. Count – после выполнения цикла заданного количества раз;
5. Logic - при выполнении некоторого логического условия
Рис. 1.2. Выбор варианта выхода из цикла
Простейшие виды циклов:
1. Движение робота по линии
К примеру необходимо, для того чтобы робот двигался по линии 2-ух расцветок, это черного и белого. При перемещении робот попадает с черного цвета на белый и ему следует вернуться на черный цвет, однако возникает проблема куда он должен подрулить, направо или же налево. Именно здесь робот, попав в данную ситуацию не может принять однозначное решение. И именно здесь необходимо привнести значительные корректировки поставленной задачи: робот обязан двигаться не по линии, а по границе черного и белого цвета.
Человеческий глаз и датчик робота совершенно по-разному различают границы двух цветов:
Датчик цвета при перемещении влево или вправо не наблюдает резкой границы черного и белого цвета. Это происходит из-за того, что при перемещении, справа налево, количество света, поступающего на сенсор, со временем увеличивается и получается, что показания датчика плавно станут возрастать.
Больше всего будет тогда устраивать что-то среднеарифметическое между белым и черным, это средний - серый цвет
Рис. 1.4 Черное плюс Белое пополам ровно Серое
Уход влево – приведет к уменьшению показаний датчика
Уход вправо – приведет к увеличению показаний датчика
Таким образом можно отличить левое от правого.
Выходит приблизительно такая программа для движения вдоль линии:
Рис 1.5 Движение робота вдоль линии
Перед стартом робот ставится на поле таким образом, чтобы датчик цвета был направлен на границу линии: черное слева, белое справа.
Цикл со счётчиком. Передача данных между блоками
К примеру, следует сделать движение робота с ускорением.
Весь текст будет доступен после покупки