Робототехника на Hobot L в mBlock Scratch
Движение по линии используется для нахождения роботом пути на заранее размеченной местности. Такое используется, например, на предприятиях в цехах, на складах, где на полу рисуют линии, по которым должен двигаться робот, перевозя грузы. Также во многих робототехнических соревнованиях используется движение робота по линии.
Принцип работа датчика линии: при подаче питания на модуль, инфракрасный светодиод начинает излучать свет, который отражаясь от белой поверхности попадает на фототранзистор. В таком режиме на выводе будет установлена логическая единица. Как только в зону видимости датчика попадает чёрный объект, световой поток, поглощаясь этим самым объектом, перестает доходить до фототранзистора и компаратор переключает вывод в логический ноль.
Датчик нужен для того, чтобы робот мог следовать по заранее нарисованной черной линии, а 2 датчика ему для того чтобы понимать в какую сторону он с нее съехал и мог вырулить на неё обратно.
Датчик | Порт |
---|---|
Левый датчик линии | Цифровой 11 |
Правый датчик линии | Цифровой 10 |
Опрашивается с помощью цифрового чтения (высокий уровень 1 и низкий уровень 0)
Подключение датчика линии
Рисунок. Наименование портов Hobot LПодключите датчик линии к порту 1 Hobots L
Если моторы робота не подключены — подключите левый мотор робота к порту М1, правый мотор — к порту М2.
Если под датчиком черное — включить мотор
Иначе — выключить мотор
Для опроса датчика линии используется команда раздела Пин -> цифровой ввод: пин “номер пина”. Эта команда выдает “Истина” если на пине высокий уровень и “Ложь”, если на пине низкий уровень.
Напишем подробный алгоритм. Не забудьте о том, что опрос датчика и реакция на опрос должны постоянно повторяться (быть в бесконечном цикле), если цикла не будет — робот один раз проверит датчик, выполнит реакцию и закончит программу. Для левого датчика линии, подключенного к пину 11, создадим переменную “Левый Линия”.
Сделаем так, чтобы робот шел по белому полю и останавливался на черной линии:
Если датчик линии на белом — робот движется вперёд
Иначе — робот стоит
Для этого изменим предыдущую программу, добавив включение второго мотора:
Таким образом, видим, что результат работы датчика, логика которого такова:
Результат условия цифровой ввод пин “11”:
Белое поле | Истина |
Черная линия | Ложь |
Примечание: в случае, если логика работы обратна — Истина на чёрной линии и Ложь на белом поле, для двух и более датчиков необходимо будет внести некоторые изменения в ветвления. Для одного датчика это не принципиально, при движении по линии смотрите, с какой стороны чёрной линии (слева или справа) находится Ваш робот в момент старта, попробуйте оба варианта.
Чтобы робот двигался именно в том направлении, в котором нужно, добавим управление направлениями с использованием контактов 4 и 7 (подробнее см. занятие по управлению направлениями моторов). Для упрощения понимания программы создадим через Мои блоки и используем в ветвлении функции Вперёд и Стоп:
Определить Вперёд:
Определить Стоп:
Если Вы хотите, чтобы робот двигался без подключенного к нему провода, переключитесь на режим Загрузка, чтобы загрузить программу в робота:
Также нужно изменить код, в качестве блока для исполнения команды Начало программы использовав блок При запуске Arduino Uno:
Загрузите измененную программу в робота, воспользовавшись кнопкой Загрузить
Общий алгоритм для движения по линии с использованием одного датчика линии, определяющего, черная линия под ним или белое поле:
Общий алгоритм:
Если датчик на белом — ехать Вперед Влево
Если датчик на черном — ехать Вперед Вправо
Детализированный алгоритм:
Для реализации данного алгоритма нужно создать две функции — благодаря которым робот едет Вперед Вправо (сворачивая по дуге вправо) и Вперед Влево (сворачивая по дуге влево). Для этого используется управление скоростями моторов, общий алгоритм:
1. Определить Вперёд Влево:
2. Левый мотор едет вперёд медленно
3. Правый мотор едет вперёд быстро
1. Определить Вперёд Вправо:
2. Левый мотор едет вперёд быстро
3. Правый мотор едет вперёд медленно
Примечание: для облегчения запоминания представьте, что сторона робота, на которой мотор едет быстрее, как бы “обгоняет” другую сторону, Вы сразу поймете, в каком направлении сворачивает робот (также см. занятие по управлению робота с помощью Bluetooth)
Детализированный алгоритм:
1. Определить Вперёд Влево:
2. Задать на цифровой пин Мотор левый Направление значение “низкий”
3. Задать на цифровой пин Мотор правый Направление значение “низкий”
4. Установить на порт Мотор левый Скорость ШИМ 100
5 Установить на порт Мотор правый Скорость ШИМ 200
1. Определить Вперёд Вправо:
2. Задать на цифровой пин Мотор левый Направление значение “низкий”
3. Задать на цифровой пин Мотор правый Направление значение “низкий”
4. Установить на порт Мотор левый Скорость ШИМ 200
5 Установить на порт Мотор правый Скорость ШИМ 100
Примечание: скорости 100 и 200 приведены ориентировочно и их надо будет отлаживать на конкретной конструкции.