Условия выхода из цикла программирования Mindstorm NXT - PullRequest
3 голосов
/ 02 декабря 2011

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

Если робот теряет линию, я сканирую его влево на 1 секунду или пока не достигнет черной линии.Если никакая линия не найдена, она сканирует вправо в течение 2 секунд, поэтому достигается начальное положение, затем еще 1 секунда или вращение достигается.

У меня настроена петля, так что если линия не найдена, робот продолжает двигаться.Это продолжается в течение 1 секунды.Если линия найдена, движение останавливается, но полная секунда все еще должна завершиться.В конечном итоге это означает, что моя программа работает отлично, но действительно очень медленно.

tl; dr Есть ли способ создать циклы с двумя условиями выхода в среде программирования LEGO Mindstorm?Или по истечении 1 секунды или датчик получает желаемый вход?

Ответы [ 3 ]

1 голос
/ 14 октября 2013

Последние два блока являются логическими блоками, установленными в «ИЛИ». В этом случае отслеживаются 3 датчика. Если кто-то отключился, программа выпадает из цикла.

.

Это со страницы 86 http://www.hightechkids.org/sites/default/files/CoachingLibrary/fll_programming_101_nxt_g.pdf

0 голосов
/ 19 декабря 2011

Mindstorms не имеет функции ИЛИ.

Решение состоит в том, чтобы создать переменную выхода, а затем создать два оператора switch. В приведенном выше примере у меня был один оператор switch с таймером, а другой с выходом датчика. Установите для переменной выхода значение false, затем в цикле while выполняйте, пока переменная выхода не станет истинной.

Если время таймера истекло, установите для переменной значение true, в противном случае игнорируйте выходную переменную. Сделайте то же самое с выходом датчика.

Это грязное и довольно длинное решение, но оно прекрасно решает проблему в довольно ограниченной системе LEGO Mindstorms.

0 голосов
/ 02 декабря 2011

Что вы можете сделать, это сделать тайм-аут короче (например, 100 мс) и остановиться, если строка найдена ИЛИ цикл запустился 10 раз.функция ИЛИ.

...