Головоломки Лабиринтус 13 см 100 шагов LB1301 в Энгельсе: 667-товаров: бесплатная доставка, скидка-45% [перейти]
Партнерская программаПомощь
Энгельс
Каталог
Каталог Товаров
Одежда и обувьОдежда и обувь
СтройматериалыСтройматериалы
Текстиль и кожаТекстиль и кожа
Здоровье и красотаЗдоровье и красота
Детские товарыДетские товары
Продукты и напиткиПродукты и напитки
ЭлектротехникаЭлектротехника
Дом и садДом и сад
Торговля и складТорговля и склад
ПромышленностьПромышленность
Мебель и интерьерМебель и интерьер
Все категории
ВходИзбранное
Шар-Лабиринт 3D «Лабиринтус» Classic, 100 шагов Производитель: IQ-ZABIAKA, Головоломка: лабиринт,
ПОДРОБНЕЕИгрушка логическая «Лабиринтус» 100 уровней Производитель: Без бренда, Головоломка: набор,
ПОДРОБНЕЕIQ-ZABIAKA Шар-головоломка «Лабиринтус», 100 уровней Производитель: IQ-ZABIAKA, Головоломка:
ПОДРОБНЕЕИгрушка логическая «Лабиринтус» 100 уровней Головоломка: лабиринт, Пол: для девочек, для мальчиков,
ПОДРОБНЕЕИгрушка логическая «Лабиринтус» 100 уров StarPony Головоломки Головоломка: лабиринт, Пол: для
ПОДРОБНЕЕЛАС играс / Развивающий логический шар «Лабиринтус«, 3D-головоломка, 100 уровней сложности, ЛАС играс
ПОДРОБНЕЕИгрушка логическая «Лабиринтус» 100 уровней Головоломка: лабиринт, Пол: для девочек, для мальчиков,
ПОДРОБНЕЕЛабиринт 3D Лабиринтус 13 см (100 шагов) Головоломка: лабиринт, Пол: для девочек, для мальчиков,
ПОДРОБНЕЕШар-головоломка Лабиринтус, 100 уровней IQ-ZABIAKA Производитель: IQ-ZABIAKA, Головоломка:
ПОДРОБНЕЕГоловоломка Лабиринт 100 шагов Возраст: 3-5 лет, 5-7 лет, Пол: для девочек, для мальчиков, унисекс
ПОДРОБНЕЕ См-100Головоломка Лабиринтус 13 смИгрушки головоломки Волшебный мир Track ball 3D 13 см 100 ходов Производитель: Волшебный мир, Пол:
ПОДРОБНЕЕГоловоломка ZABIAKA «Лабиринтус«, головоломка шар, лабиринт, 100 уровней Производитель: Zabiaka,
ПОДРОБНЕЕГоловоломка Шар — Лабиринт 100 шагов, 13 см Производитель: Лабиринтус, Головоломка: лабиринт,
ПОДРОБНЕЕВолшебный МИР Головоломка Track Ball 3D 13 см 100 ходов Производитель: Волшебный мир, Пол: для
ПОДРОБНЕЕ-45%
1 642
2999
Массажер Аппликатор Ляпко «Коврик малый», металлоигольчатый, 23,7 см х 13,7 см, шаг игл 6 мм, 100% оригинал
В МАГАЗИНГоловоломка Шар лабиринт, 100 шагов, размер 12 см Производитель: S+S Toys, Головоломка: лабиринт,
ПОДРОБНЕЕШар-головоломка Собери Лабиринтус, 100 уровней, микс IQ-ZABIAKA Производитель: IQ-ZABIAKA,
ПОДРОБНЕЕГоловоломка Шар лабиринт 3D Лабиринтус 100 шагов
ПОДРОБНЕЕИнтеллектуальный шар 3D, 100 барьеров, диаметр лабиринта 19 см Головоломка: лабиринт, Материал:
ПОДРОБНЕЕ-15%
542
638
Головоломка Шар лабиринт, 100 шагов, 12 см Производитель: S+S Toys, Головоломка: лабиринт,
ПОДРОБНЕЕРазвивающий логический шар «Собери Лабиринтус«, 3D игра-головоломка, 100 уровней Производитель:
ПОДРОБНЕЕШар-головоломка «Лабиринтус», 100 уровней Головоломка: лабиринт, Возраст: 7-9 лет, 9-14 лет, Пол:
ПОДРОБНЕЕЛяпко / Аппликатор Ляпко «Коврик малый силикон», шаг игл 6,0 мм, размер 13,7х23,7 см, 100% оригинал, Ляпко
ПОДРОБНЕЕШар-лабиринт «100 барьеров 3D» диаметр 13 см Производитель: Gamestil, Головоломка: лабиринт, Пол:
ПОДРОБНЕЕМассажер Аппликатор Ляпко «Коврик малый», металлоигольчатый, 23,7 см х 13,7 см, шаг игл 6 мм, 100% оригинал
ПОДРОБНЕЕШар-лабиринт Track Ball 3D 13 см (100 ходов) Головоломка: лабиринт, Пол: для девочек, для
ПОДРОБНЕЕ-33%
1 072
1600
Шар-головоломка «Лабиринтус«. 100 уровней Kangaeru Головоломка: лабиринт, Пол: для девочек, для
ПОДРОБНЕЕГоловоломка ABtoys Шар интеллектуальный 3D, 100 барьеров, диаметр 19 см, в коробке Производитель:
ПОДРОБНЕЕ2 страница из 18
Головоломки Лабиринтус 13 см 100 шагов LB1301
Головоломка шар лабиринт лабиринтус 13 см,100 шагов в Кропоткине: 216-товаров: бесплатная доставка, скидка-55% [перейти]
Партнерская программаПомощь
Кропоткин
Каталог
Каталог Товаров
Одежда и обувьОдежда и обувь
СтройматериалыСтройматериалы
Текстиль и кожаТекстиль и кожа
Здоровье и красотаЗдоровье и красота
ПромышленностьПромышленность
Продукты и напиткиПродукты и напитки
Детские товарыДетские товары
ЭлектротехникаЭлектротехника
Дом и садДом и сад
Сельское хозяйствоСельское хозяйство
Приборы и автоматикаПриборы и автоматика
Все категории
ВходИзбранное
-55%
Шаг 100, 3D головоломка, шар, волшебный Интеллектуальный шар, лабиринт, детские игрушки, сложные барьеры, игра, мозговой тестер, тренировка баланса
ПОДРОБНЕЕГоловоломка шар—лабиринт 100 шагов Головоломка: лабиринт, Возраст: 5-7 лет, 7-9 лет, Пол: для
ПОДРОБНЕЕЛогическая игрушка головоломка Шар лабиринт, 100 шагов Головоломка: лабиринт, Материал: пластик,
ПОДРОБНЕЕГоловоломка Шар—лабиринт 100 шагов Головоломка: лабиринт, Возраст: 5-7 лет, 7-9 лет, Пол: для
ПОДРОБНЕЕРазвивающий логический шар «Собери Лабиринтус«, 3D игра-головоломка, 100 уровней Производитель:
ПОДРОБНЕЕ-25%
578
771
3D-головоломка, 100 шаг, сфера шар, лабиринт Головоломка: лабиринт, Пол: для девочек, для
ПОДРОБНЕЕ-45%
469
854
100-299 шагов 3D большой шар магический Интеллект лабиринт шар Головоломка замок логическая игра обучающая магический интеллект головоломка IQ Balance
ПОДРОБНЕЕTrack Ball 3D / Шар—лабиринт Track Ball 3D (100 ходов), Track Ball 3D Головоломка: лабиринт,
ПОДРОБНЕЕИгра головоломка «Шар—лабиринт«, 100 шагов Головоломка: лабиринт, Материал: пластик, Возраст: 3-5
ПОДРОБНЕЕГоловоломка Шар лабиринт, 100 шагов, размер 12 см Производитель: S+S Toys, Головоломка: лабиринт,
ПОДРОБНЕЕ2 страница из 8
Головоломка шар лабиринт лабиринтус 13 см,100 шагов
Лабиринт Настройка и калибровка | LEARN.
PARALLAX.COMCircuit
Следуйте инструкциям, прилагаемым к комплекту приложений QTI Line Follower (#28108) (цифровую копию см. в разделе «Загрузки и ресурсы» на странице продукта). Для этого приложения необходимы некоторые аппаратные модификации. В инструкциях AppKit каждый QTI монтируется от края до края, но в этом приложении потребуется большее расстояние между QTI, чтобы Boe-Bot мог обнаруживать повороты и другие препятствия. Используйте рисунок 1 в качестве руководства и установите QTI так, чтобы два центральных QTI находились на расстоянии 0,8 см друг от друга, а крайние датчики находились на расстоянии 2 см от центра QTI.
Рисунок 1 — Установленные датчики QTI
Лабиринт
На рисунке 2 показан лабиринт с различными препятствиями, по которым Boe-Bot должен пройти, включая короткие и длинные прямые пути, повороты на 90° влево и вправо, Т-образный перекресток и тупик. Эти препятствия создают ряд навигационных проблем, которые вы можете решить, тем самым улучшив производительность вашего Boe-Bot в более крупных и сложных лабиринтах. При построении лабиринта используйте большой кусок картона и убедитесь, что каждая полоса дорожки имеет ширину 1,5 дюйма из черной ленты. На рис. 2 показан лабиринт, предназначенный для этого занятия (не в масштабе).
Рис. 2 — Лабиринт с электрической лентой Boe-Bot
Прежде чем мы начнем, вы должны знать, что последняя программа в этом проекте может быть больше, чем примеры программ, которые вы, возможно, пробовали в Robotics с Boe-Bot . Это потому, что есть много условий, которые должны быть приняты во внимание! Этот «мини-проект» демонстрирует, как взять сложную проблему и разбить ее на мелкие части, чтобы успешно решить ее. Для этого нам нужно откалибровать нашего Boe-Bot, чтобы он маневрировал в каждом состоянии, прежде чем собирать все вместе. Это сэкономит нам время при устранении неполадок, если мы будем знать, что каждая отдельная часть работает должным образом.
Убедитесь, что вы выполнили каждый шаг калибровки!
Очень важно следовать всем инструкциям по калибровке вашего Boe-Bot и обновлять значения в коде, которые они определяют экспериментально. Если вы пропустите какие-либо шаги или попытаетесь запустить код примера как есть, он, вероятно, не сработает.
Имейте в виду, что ценность Boe-Bot заключается в том, что с ним интересно играть, но он не является игрушечным роботом с ограниченным набором функций. Это робот с платформой для прототипирования, который может быть таким, каким вы его создадите. То есть, если вы готовы немного поработать и кое-чему научиться!
Движение вперед
Так как Boe-Bot должен двигаться медленно в некоторых точках лабиринта, нам придется замедлить сервоприводы от обычных 850, 650 PUSLOUT. Это поможет гарантировать, что показания QTI не будут пропущены, когда Boe-Bot перемещается по лабиринту, и вы можете использовать ту же процедуру тестирования, представленную в Robotics, с Boe-Bot Глава 4, Упражнение № 2.
Чтобы замедлить движение вперед, помните, что значение PULSOUT, равное 750, останавливает серводвигатели. Поэтому мы хотим выбрать значения ближе к 750, чтобы Boe-Bot медленно продвигался вперед. Для дальнейшего объяснения взгляните на график зависимости скорости вращения от ширины импульса для сервопривода на стр. 9.0023 Робототехника с Boe-Bot Глава 3, Задание №4. Обратите внимание, что скорость действительно начинает замедляться только тогда, когда импульсы приближаются к 700 с 650 и 800 с 850, поэтому не беспокойтесь, если изменение с 850 на 840 не имеет никакого эффекта.
Ниже представлена версия BoeBotForwardTenSeconds.bs2, которую можно использовать для калибровки Boe-Bot.
' SlowlyForward.bs2 ' Откалибруйте Boe-Bot так, чтобы он медленно двигался вперед по прямой. ' {$ШТАМП БС2} ' {$PBASIC 2.5} счетчик VAR Word ДЛЯ счетчика = от 1 до 407 ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ КОНЕЦ
Калибровка левого поворота на 90°
После калибровки кода замедленной перемотки следующим шагом будет калибровка поворотов на 90°. В лабиринте их много, так что постарайтесь здесь хорошо. Это просто, и вы уже откалибровали своего Boe-Bot для выполнения одного из заданий Robotics с помощью Boe-Bot Глава 4, Задание № 2… верно? Если нет, не продолжайте, пока не закончите этот важный шаг! Теперь все, что нам нужно сделать, это запрограммировать Boe-Bot, чтобы он поворачивал налево, когда лабиринт поворачивает.
Вы можете установить условия, которым должен следовать Boe-Bot, используя операторы SELECT…CASE. Таким образом, если QTI отправляют показания, которые сообщают BASIC Stamp, что Boe-Bot должен повернуть налево, BASIC Stamp затем может отправлять импульсы сервоприводам для выполнения 90° левый поворот. Запутались?
Если вы не понимаете операторы SELECT…CASE и то, как они здесь применяются, вернитесь и посетите страницу Boe-Bot Line Following with Four QTI Sensors, чтобы получить подробную информацию о том, как работает следование по линии с помощью QTI.
Используйте пример кода ниже и измените значения по мере необходимости, чтобы ваш Boe-Bot выполнял повороты на 90° влево, оставаясь в центре пути лабиринта.
' MazeNavigation_LeftTurn.bs2 ' Boe-Bot поворачивает налево на основе значений QTI. ' {$ШТАМП БС2} ' {$PBASIC 2.5} qtis VAR Nib ' qti черно-белые состояния pulseCount VAR Byte ' FOR..NEXT счетчик цикла для поворота OUTB = %1111 ' Установить биты OUTB в 1 DO ' Main DO...LOOP GOSUB Check_Qtis ' Получить состояния QTI SELECT qtis ' Управление скоростью/направлением сервопривода CASE %0110 ' Прямо вперед ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛУЧАЙ %1110 GOSUB Turn_Left CASE ELSE ' Ничего не делать ПАУЗА 3 КОНЕЦВЫБОР ПЕТЛЯ Check_Qtis: ' Проверяет состояние каждого датчика QTI. 0 означает белую поверхность, 1 означает черную. DIRB = %1111 ' P7..P4 -> вывод ПАУЗА 0 ' Задержка = 230 мкс DIRB = %0000 ' P7..P4 -> ввод ПАУЗА 0 ' Задержка = 230 мкс qtis = INB ' Сохранение выходных данных QTI в INB ВОЗВРАЩАТЬСЯ Поверните налево: FOR pulseCount = 0 TO 15 ' Продвиньтесь немного вперед, чтобы Boe-Bot PULSOUT 13, 770 ' держит курс ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ FORpulseCount = 0 TO 24 ' Поверните налево, около 90 градусов ПУЛЬСАУТ 13, 650 ПУЛЬСАУТ 12, 650 ПАУЗА 20 СЛЕДУЮЩИЙ ВОЗВРАЩАТЬСЯ
Калибровка правого поворота на 90°
Калибровка Boe-Bot для выполнения правого поворота на 90° работает так же, как и калибровка левого поворота. Эти значения, вероятно, не будут зеркальным отражением левых поворотов, поэтому важно протестировать и найти необходимые значения длительности PULSOUT, чтобы правые повороты были такими же надежными, как и левые. Используйте пример кода ниже и измените значения по мере необходимости, чтобы ваш Boe-Bot выполнял 9Поворачивается вправо на 0°, оставаясь в центре пути лабиринта.
' MazeNavigation_LeftTurn.bs2 ' Boe-Bot поворачивает налево на основе значений QTI. ' {$ШТАМП БС2} ' {$PBASIC 2.5} qtis VAR Nib ' qti черно-белые состояния pulseCount VAR Byte ' FOR..NEXT счетчик цикла для поворота OUTB = %1111 ' Установить биты OUTB в 1 DO ' Main DO...LOOP GOSUB Check_Qtis ' Получить состояния QTI SELECT qtis ' Управление скоростью/направлением сервопривода CASE %0110 ' Прямо вперед ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛУЧАЙ %0111 GOSUB Turn_Right CASE ELSE ' Ничего не делать ПАУЗА 3 КОНЕЦВЫБОР ПЕТЛЯ Check_Qtis: ' Проверяет состояние каждого датчика QTI. 0 означает белую поверхность, 1 означает черную DIRB = %1111 ' P7..P4 -> вывод ПАУЗА 0 ' Задержка = 230 мкс DIRB = %0000 ' P7..P4 -> ввод ПАУЗА 0 ' Задержка = 230 мкс qtis = INB ' Сохранение выходных данных QTI в INB ВОЗВРАЩАТЬСЯ Поверните направо: FOR pulseCount = 0 TO 15 ' Продвиньтесь немного вперед, чтобы Boe-Bot PULSOUT 13, 770 ' держит курс ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ FORpulseCount = 0 TO 24 ' Поверните направо, около 90 градусов ПУЛЬСАУТ 13, 850 ПУЛЬСАУТ 12, 850 ПАУЗА 20 СЛЕДУЮЩИЙ ВОЗВРАЩАТЬСЯ
Калибровка Т-образного пересечения
Итак, что происходит, когда Boe-Bot сталкивается с Т-образным пересечением? Одно из решений, которое мы будем здесь использовать, состоит в том, чтобы запрограммировать Boe-Bot на принятие случайного решения, когда он достигает Т-образного перекрестка.
В MazeNavigation_TIntersection.bs2 псевдослучайное число в диапазоне от 0 до 65535 генерируется каждый раз в основном цикле с помощью команды RANDOM. Взглянув на один бит этого числа, Boe-Bot может повернуться влево или вправо в зависимости от того, равно ли значение этого бита 0 или 1.
Зачем использовать команду RANDOM в основном цикле, а не в подпрограмме T_Intersection?
При каждом использовании команды RANDOM создается псевдослучайное число. Это означает, что даже если сгенерированное число кажется случайным, на самом деле оно генерируется с помощью логической операции, использующей начальное значение («начальное число») в переменной с именем rng для «подключения» к последовательности из 65535 по существу случайных чисел. Таким образом, если бы команда RANDOM rng была помещена в подпрограмму T_Intersection, использовалось бы одно и то же значение rng, каждый раз генерируя одну и ту же последовательность значений.
Для получения дополнительной информации найдите команду RANDOM в BASIC Stamp Syntax and Reference Manual или в справке BASIC Stamp Editor.
Используя MazeNavigation_TIntersection.bs2, выполните следующие тесты:
- Запустите код и используйте терминал отладки, чтобы убедиться, что вы каждый раз получаете псевдослучайные результаты.
- Нажмите кнопку сброса и двигайте Boe-Bot по прямому пути, пока он не достигнет Т-образного перекрестка
- Повторите этот процесс несколько раз и убедитесь, что результаты поворота меняются каждый раз при достижении Т-образного перекрестка.
' MazeNavigation_TIntersection.bs2 ' Когда все датчики QTI обнаруживают черную линию, Boe-Bot случайным образом решает 'повернуться налево или направо. Этот код имитирует решение, печатая «Turn ' Левый!" или "Поверни направо!" к терминалу отладки. ' {$ШТАМП БС2} ' {$PBASIC 2.5} rng VAR Word 'случайное число turnDecision VAR rng.BIT0 ' 0-й бит случайного числа qtis VAR Nib ' qti черно-белые состояния OUTB = %1111 ' Установить биты OUTB в 1 DEBUG CLS ' Очистить экран отладки DO ' Main DO...LOOP GOSUB Check_Qtis ' Получить состояния QTI RANDOM rng ' Создать случайное число SELECT qtis ' Управление скоростью/направлением сервопривода CASE %0110 ' Прямо вперед ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛУЧАЙ %1111 GOSUB T_Intersection CASE ELSE ' Ничего не делать ПАУЗА 3 КОНЕЦВЫБОР ПЕТЛЯ Check_Qtis: ' Проверяет состояние каждого датчика QTI. 0 означает белую поверхность, 1 означает черную DIRB = %1111 ' P7..P4 -> вывод ПАУЗА 0 ' Задержка = 230 мкс DIRB = %0000 ' P7. .P4 -> ввод ПАУЗА 0 ' Задержка = 230 мкс qtis = INB ' Сохранение выходных данных QTI в INB ВОЗВРАЩАТЬСЯ T_Intersection: ЕСЛИ (turnDecision = 0), ТО ОТЛАДКА "Поверни направо!", CR ПАУЗА 100 ИНАЧЕ ЕСЛИ (turnDecision = 1) ТО ОТЛАДКА "Поверни налево!", CR ПАУЗА 100 КОНЕЦ ВОЗВРАЩАТЬСЯ
Навигация в тупике и «искусственный интеллект»
Тупик — еще одно распространенное препятствие в лабиринтах, и существует множество различных подходов к решению этой проблемы. Приведенная ниже программа обрабатывает это следующим образом: Boe-Bot будет пятиться назад, пока не достигнет поворота, ведущего в тупик, а затем выполнит поворот на 90°, чтобы вернуться на путь лабиринта.
А что тогда? Boe-Bot все же сделал еще один поворот, который привел его в тупик, и если он снова сделает этот поворот, он вернется к началу, а не продолжит движение до конца. Одним из способов решения этой проблемы было бы создание новой переменной. Назовем его «ИИ». Когда эта переменная равна 1, Boe-Bot будет игнорировать левый поворот, который вернет его в начало. Создав новую подпрограмму с именем AI_Decision, Boe-Bot может выполнять левые повороты на основе значения переменной AI.
Используйте следующий код, чтобы убедиться, что ваш Boe-Bot может успешно выйти из тупика. Помните, что может потребоваться некоторая настройка!
' MazeNavigation_DeadEnd.bs2 Boe-Bot отступает назад, пока не заметит поворот, а затем снова движется вперед. ' {$ШТАМП БС2} ' {$PBASIC 2.5} qtis VAR Nib ' qti черно-белые состояния AI VAR Byte ' "Искусственный интеллект" ' помнит тупики pulseCount VAR Byte ' FOR..NEXT счетчик цикла для поворота OUTB = %1111 ' Установить биты OUTB в 1 DO ' Main DO...LOOP GOSUB Check_Qtis ' Получить состояния QTI SELECT qtis ' Управление скоростью/направлением сервопривода CASE %0110 ' Прямо вперед ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛУЧАЙ %1110 GOSUB AI_Decision CASE %0000 ' Резервное копирование до следующего хода GOSUB Тупик CASE ELSE ' Ничего не делать ПАУЗА 3 КОНЕЦВЫБОР ПЕТЛЯ Check_Qtis: ' Проверяет состояние каждого датчика QTI. 0 означает белую поверхность, 1 означает черную DIRB = %1111 ' P7..P4 -> вывод ПАУЗА 0 ' Задержка = 230 мкс DIRB = %0000 ' P7..P4 -> ввод ПАУЗА 0 ' Задержка = 230 мкс qtis = INB ' Сохранение выходных данных QTI в INB ВОЗВРАЩАТЬСЯ AI_Decision: IF (AI = 1) THEN ' Если AI = 1, Boe-Bot оказался в тупике AI = 0 ' Установить для переменной AI значение 0 GOSUB Ignore_Turn ' Игнорировать поворот, который ведет к Start ELSEIF (AI = 0) THEN ' Если AI = 0, Boe-Bot не GOSUB Turn_Left ' тупик, так что можно повернуть налево. КОНЕЦ ВОЗВРАЩАТЬСЯ Игнорировать_поворот: FORpulseCount = от 0 до 50 ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ ВОЗВРАЩАТЬСЯ Поверните налево: FOR pulseCount = 0 TO 15 ' Продвиньтесь немного вперед, чтобы Boe-Bot остался PULSOUT 13, 770 ' на курсе. ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ FORpulseCount = 0 TO 17 ' Поверните налево, около 90 градусов ПУЛЬСАУТ 13, 650 ПУЛЬСАУТ 12, 650 ПАУЗА 20 СЛЕДУЮЩИЙ ВОЗВРАЩАТЬСЯ Тупик: ДЕЛАТЬ GOSUB Check_Qtis ПУЛЬСАУТ 13, 730 ПУЛЬСАУТ 12, 770 ПАУЗА 20 LOOP ДО (qtis = %0111) ЕСЛИ (qtis = %0111) ТО ПАУЗА 20 FORpulseCount = от 0 до 15 ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ FORpulseCount = от 0 до 17 ПУЛЬСАУТ 13, 850 ПУЛЬСАУТ 12, 850 ПАУЗА 20 СЛЕДУЮЩИЙ КОНЕЦ ИИ = 1 ВОЗВРАЩАТЬСЯ
Держите Boe-Bot на правильном пути!
Последним этапом калибровки будет написание кода, который удерживает Boe-Bot по центру изоленты, поскольку есть несколько факторов, которые могут сбить его с курса: не совсем прямая лента, проскальзывание во время поворотов и т. д. Имейте в виду, что коррекция линии может быть затруднена при перемещении по лабиринтам, поскольку Boe-Bot может сбиться с пути разными способами, и каждая реакция будет разной. В приведенном ниже решении всякий раз, когда Boe-Bot обнаруживает, что он сбился с курса, он реагирует следующим образом:
- Стоп.
- Медленно вращайте, пока оба средних датчика не вернутся на линию.
- Слегка поверните влево/вправо в зависимости от того, в какую сторону Boe-Bot сбился с пути.
- Слегка поверните в другом направлении, чтобы вернуть Boe-Bot на линию.
Этот код прошел несколько итераций калибровки, тестирования, повторной калибровки, повторной проверки и т. д. Поскольку значения могут быть совершенно разными, вам также может потребоваться пройти несколько итераций проверки и повторной калибровки. Имейте в виду, что эти шаги необходимы для успешного прохождения линии через лабиринт, поскольку центральные датчики должны быть на линии при движении вперед. Выполните следующие шаги, чтобы убедиться, что Boe-Bot может оставаться в центре пути лабиринта:
- Начните с крайнего левого датчика на изоленте и посмотрите, сколько времени потребуется Boe-Bot, чтобы отцентрироваться на линии.
- Если вы обнаружите, что Boe-Bot выполняет коррекцию недостаточно быстро, попробуйте увеличить продолжительность импульса в циклах FOR. ..NEXT.
- С другой стороны, если вы обнаружите, что Boe-Bot поворачивается слишком далеко, попробуйте уменьшить продолжительность импульса в циклах FOR…NEXT.
- Повторите действия с крайним правым датчиком, крайним левым и средним левым датчиками, а также крайним правым и средним правым датчиками.
- Как только эти значения кажутся правильными, попробуйте сдвинуть плакат, чтобы заставить Boe-Bot сбиться с пути, и посмотрите, как быстро он отреагирует.
' MazeNavigation_StayOnStripe.bs2 Программа калибровки для удержания Boe-Bot на пути изоленты. ' {$ШТАМП БС2} ' {$PBASIC 2.5} qtis VAR Nib ' qti черно-белые состояния pulseCount VAR Word ' FOR...NEXT счетчик циклов для плавного ' превращение. OUTB = %1111 ' Установить биты OUTB в 1 DO ' Main DO...LOOP GOSUB Check_Qtis ' Получить состояния QTI SELECT qtis ' Управление скоростью/направлением сервопривода CASE %0110 ' Обнаружены средние левый и правый датчики, идите вперед ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 730 ПАУЗА 20 CASE %1000 ' Обнаружен крайний левый датчик GOSUB BackOnTrack_OneSensorLeft CASE %1100 ' Обнаружены дальний и средний левый датчики GOSUB BackOnTrack_TwoSensorsLeft CASE %0001 ' Обнаружен крайний правый датчик GOSUB BackOnTrack_OneSensorRight CASE %0011 ' Обнаружен дальний и средний правый датчик GOSUB BackOnTrack_TwoSensorsRight CASE ELSE ' Ничего не делать ПАУЗА 3 КОНЕЦВЫБОР ПЕТЛЯ Check_Qtis: ' Проверяет состояние каждого датчика QTI. 0 означает белую поверхность, 1 означает черную DIRB = %1111 ' P7..P4 -> вывод ПАУЗА 0 ' Задержка = 230 мкс DIRB = %0000 ' P7..P4 -> ввод ПАУЗА 0 ' Задержка = 230 мкс qtis = INB ' Сохранение выходных данных QTI в INB ВОЗВРАЩАТЬСЯ BackOnTrack_OneSensorLeft: PULSOUT 13, 750 ' Стоп ПУЛЬСАУТ 12, 750 DO ' Медленно вращайте до середины GOSUB Check_Qtis ' QTI снова в деле ПУЛЬСАУТ 13, 750 ПУЛЬСАУТ 12, 740 ПАУЗА 20 LOOP ДО (qtis = %0110) IF (qtis = %0110) THEN ' Когда вернутся средние QTI FOR pulseCount = 1 TO 20 ' в строке, поверните влево для PULSOUT 13, 750 ' 20 импульсов, а затем повернуть вправо PULSOUT 12, 740 ' для 10 импульсов для центрирования Boe- ПАУЗА 20 ' Бот на линии. СЛЕДУЮЩИЙ FORpulseCount = от 0 до 10 ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 750 ПАУЗА 20 СЛЕДУЮЩИЙ КОНЕЦ ВОЗВРАЩАТЬСЯ BackOnTrack_TwoSensorsLeft: PULSOUT 13, 750 ' Стоп ПУЛЬСАУТ 12, 750 ДЕЛАТЬ GOSUB Check_Qtis ' Медленно вращайте до середины PULSOUT 13, 750 ' QTI снова в деле ПУЛЬСАУТ 12, 740 ПАУЗА 20 LOOP ДО (qtis = %0110) IF (qtis = %0110) THEN ' Когда вернутся средние QTI FOR pulseCount = 1 TO 20 ' в строке, поверните влево для PULSOUT 13, 750 ' 20 импульсов, а затем повернуть вправо PULSOUT 12, 730 ' для 10 импульсов для центрирования Boe- ПАУЗА 20 ' Бот на линии. СЛЕДУЮЩИЙ FORpulseCount = от 0 до 10 ПУЛЬСАУТ 13, 770 ПУЛЬСАУТ 12, 750 ПАУЗА 20 СЛЕДУЮЩИЙ КОНЕЦ ВОЗВРАЩАТЬСЯ BackOnTrack_OneSensorRight: PULSOUT 13, 750 ' Стоп ПУЛЬСАУТ 12, 750 ДЕЛАТЬ GOSUB Check_Qtis ' Медленно вращайте до середины PULSOUT 13, 760 QTI снова в деле ПУЛЬСАУТ 12, 750 ПАУЗА 20 LOOP ДО (qtis = %0110) IF (qtis = %0110) THEN ' Когда вернутся средние QTI FOR pulseCount = 1 TO 20 ' в строке, поверните вправо для PULSOUT 13, 760 ' 20 импульсов, а затем повернуть влево PULSOUT 12, 750 ' для 10 импульсов для центрирования Boe- ПАУЗА 20 ' Бот на линии. СЛЕДУЮЩИЙ FORpulseCount = от 0 до 10 ПУЛЬСАУТ 13, 750 ПУЛЬСАУТ 12, 730 ПАУЗА 20 СЛЕДУЮЩИЙ КОНЕЦ ВОЗВРАЩАТЬСЯ BackOnTrack_TwoSensorsRight: PULSOUT 13, 750 ' Стоп ПУЛЬСАУТ 12, 750 ДЕЛАТЬ GOSUB Check_Qtis ' Медленно вращайте до середины PULSOUT 13, 760 QTI снова в деле ПУЛЬСАУТ 12, 750 ПАУЗА 20 LOOP ДО (qtis = %0110) IF (qtis = %0110) THEN ' Когда вернутся средние QTI FOR pulseCount = 1 TO 20 ' в строке, поверните вправо для PULSOUT 13, 770 ' 20 импульсов, а затем повернуть влево PULSOUT 12, 750 ' для 10 импульсов для центрирования Boe- ПАУЗА 20 ' Бот на линии.