Урок прогресс
0% завершено
Время запрограммировать нашего робота, избегающего препятствий! Выполним следующие шаги, чтобы создать скрипт для робота, избегающего препятствия.
Запуск робота
- Создадим две переменные под названием Max (Максимум), and Min (Минимум) из панели Variables (Переменные).
- Возьмём и перетащим блок when green flag clicked (при нажатии зелёного флага) из панели Events (События)..
- Затем добавим блок set () to() ((установить () на ()). Установим на Min (Минимум), на 5.
- Скопируем этот блок и установим на Max (Максимум), на 30. Так мы определили максимальное и минимальное расстояние как 30 см и 5 см.
- Создадим блок с названием Initialize Robot (Запустить робота). Поместим блок.
- Для начала работы контактов перейдём на панель Sensors (Датчики) и добавим блок connect Ultrasonic () to trig (), echo() (подключить ультразвуковой датчик () к trig (), echo) под блок Initialize Robot (Запустить робота).
- Следующий шаг — установить угол сервопривода на 90 градусов. Для этого возьмём и установим блок set servo on() to () angle (установить сервопривод на () до () угла) из панели Robot (Робот).
- Добавим wait () second (ждать () секунд) под блок set servo on () to () angle (установить сервопривод на () до () угла).
Обнаружение препятствия
- После этого перейдём на панель Control (Управление) и добавим блок forever (всегда) под блок Initialize Robot (Запустить робота).
- После этого добавим блок if () then (если () то) из панели Control (Управление) внутрь блока forever (всегда).
- Затем перейдём на панель Operators (Операторы) и добавим блок ()<() внутрь пробела в блоке if () then (если () то).
- Перетащим и поместим блок get ultrasonic () distance (определить с помощью ультразвука () расстояние) из панели Sensors (Датчики) в первый пробел в блоке ()>(), а также укажем переменную Min (Минимум) во втором пробеле. Этот блок позволит сравнить показания датчика со значением минимального расстояния.
Проверка свободной зоны
- Затем создадим новый блок под названием Set Servo Angle with Delay () (Установить угол сервопривода с задержкой ())с параметром Angle (Угол).
- Установим блок set servo on() to () angle (установить сервопривод на () до () угла) с параметром Angle (Угол) в качестве значения угла.
- После этого добавим задержку на 0,5 секунд с помощью блока wait () seconds (ждать () секунд).
- Вернёмся к главному скрипту. Добавим блок stop robot (остановить робота) из панели Robot (Робот). Добавим блок Set Servo Angle with Delay () (Установить угол сервопривода с задержкой ()) со значением угла 45 градусов. Это условие позволит остановить робота и изменить угол сервопривода на 45, если в минимальном диапазоне расстояния появится препятствие.
- Теперь проверим максимальное расстояние, добавив блок if () then else (если () то или) из панели Control (Управление).
- Затем перейдём на панель Operators (Операторы) и добавим блок ()>() внутрь пробела в блоке if () then else (если () то или).
- Перетащим и поместим блок get ultrasonic () distance (определить с помощью ультразвука () расстояние) из панели Sensors (Датчики) в первый пробел в блоке ()>(), а также укажем переменную Max (Максимум) во втором пробеле. Этот блок позволит сравнить показания датчика со значением максимального расстояния.
- При выполнении этого условия робот должен повернуть направо. Этого мы сможем добиться, если вставим блок go () at () % speed for () seconds (перемещаться () при () % скорости в течение () секунд) внутрь оператора «если». Установим скорость на 50%, а время — на 0,6 секунды.
- После этого скопируем блок Set Servo Angle with Delay () (Установить угол сервопривода с задержкой ()) и установим его в ветвь «или». Установим угол на 135 градусов, а направление робота — налево.
- Создадим новый блок с названием Check Extreme (Проверка предельного значения). Этот блок будет проверять условия для 0 и 180 градусов. Добавим блок в ветвь “или”.
- Ещё, если наш робот не найдёт никаких препятствий, ему нужно двигаться вперёд. Для этого поместим блок servo () to the () angle (сервопривод () на () угол) в конце первой ветви «если». Установим значение угла на 90 градусов.
- Наконец, установим блок go () at () speed () (перемещаться () при () скорости ()). Из выпадающего меню выберем направление — вперёд, а скорость установим на 50%.
Проверка условий предельных значений
- Скопируем блок Set Servo Angle with Delay () (Установить угол сервопривода с задержкой ()) со значением 135 и поместим его под блок Check Extreme (Проверка предельного значения). Установим угол на 0 градусов, направление робота — направо, а время — на 1,2 секунды.
- Скопируем блок Set Servo Angle with Delay () (Установить угол сервопривода с задержкой ()) и установим его в ветвь «или». Установим угол на 180 градусов, а направление робота — налево.
- Добавим блок go () at () % speed for () seconds (перемещаться () при () % скорости в течение () секунд) внутрь ветви «или». В этот раз установим направление — направо, скорость — на 80%, а время — на 1,5 секунды. Это позволит роботу перемещаться назад.
Наконец-то, наш робот готов к работе!
Испытание
Включим робота и проверим, всё ли работает как надо.
Загрузка кода в Кварки
Ещё мы можем загрузить код в Кварки, чтобы он мог работать независимо от PictoBlox. Это можно сделать только с помощью ноутбука. Выполним следующие шаги:
- Переключимся на режим Upload (Загрузка).
- Заменим блок when green flag clicked (при нажатии на зелёный флаг) на блок when Quarky starts up (при включении Кварки).
- Загрузим код с помощью кнопки Upload Code (Загрузить код).
Вот и всё. Теперь наш робот может работать независимо от PictoBlox.