Hobots

Робототехника на Hobot L в mBlock Scratch

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

Описание датчика линии

Принцип работа датчика линии: при подаче питания на модуль, инфракрасный светодиод начинает излучать свет, который отражаясь от белой поверхности попадает на фототранзистор. В таком режиме на выводе будет установлена логическая единица. Как только в зону видимости датчика попадает чёрный объект, световой поток, поглощаясь этим самым объектом, перестает доходить до фототранзистора и компаратор переключает вывод в логический ноль.

Датчик нужен для того, чтобы робот мог следовать по заранее нарисованной черной линии, а 2 датчика ему для того чтобы понимать в какую сторону он с нее съехал и мог вырулить на неё обратно.

ДатчикПорт
Левый датчик линииЦифровой 11
Правый датчик линииЦифровой 10

Опрашивается с помощью цифрового чтения (высокий уровень 1 и низкий уровень 0)

Подключение датчика линии

Рисунок. Наименование портов Hobot LПодключите датчик линии к порту 1 Hobots L
Если моторы робота не подключены — подключите левый мотор робота к порту М1, правый мотор — к порту М2.

Проверка датчика линии — управление одним мотором

  1. Напишем программу включения одного мотора по наличию линии под датчиком. Общий алгоритм:

Если под датчиком черное — включить мотор

Иначе — выключить мотор

Для опроса датчика линии используется команда раздела Пин -> цифровой ввод: пин “номер пина”. Эта команда выдает “Истина” если на пине высокий уровень и “Ложь”, если на пине низкий уровень.
Напишем подробный алгоритм. Не забудьте о том, что опрос датчика и реакция на опрос должны постоянно повторяться (быть в бесконечном цикле), если цикла не будет — робот один раз проверит датчик, выполнит реакцию и закончит программу. Для левого датчика линии, подключенного к пину 11, создадим переменную “Левый Линия”.

  1. Начало
  2. Задать для Мотор левый Скорость значение 6
  3. Задать для Левый Линия значение 11
  4. Повторять всегда:

Датчик линии — управление двумя моторами для остановки на линии

Сделаем так, чтобы робот шел по белому полю и останавливался на черной линии:

Если датчик линии на белом — робот движется вперёд

Иначе — робот стоит

Для этого изменим предыдущую программу, добавив включение второго мотора:

  1. Начало
  2. Задать для Мотор левый Скорость значение 6
  3. Задать для Мотор правый Скорость значение 6
  4. Задать для Левый Линия значение 11
  5. Повторять всегда:

Таким образом, видим, что результат работы датчика, логика которого такова:

Результат условия цифровой ввод пин “11”:

Белое полеИстина
Черная линияЛожь

Примечание: в случае, если логика работы обратна — Истина на чёрной линии и Ложь на белом поле, для двух и более датчиков необходимо будет внести некоторые изменения в ветвления. Для одного датчика это не принципиально, при движении по линии смотрите, с какой стороны чёрной линии (слева или справа) находится Ваш робот в момент старта, попробуйте оба варианта.

Управление двумя моторами для остановки на линии с изменением направления

Чтобы робот двигался именно в том направлении, в котором нужно, добавим управление направлениями с использованием контактов 4 и 7 (подробнее см. занятие по управлению направлениями моторов). Для упрощения понимания программы создадим через Мои блоки и используем в ветвлении функции Вперёд и Стоп:

  1. Начало
  2. Задать для Мотор левый Направление значение 7
  3. Задать для Мотор правый Направление значение 4
  4. Задать для Мотор левый Скорость значение 6
  5. Задать для Мотор правый Скорость значение 5
  6. Задать для Левый Линия значение 11
  7. Повторять всегда:

Определить Вперёд:

Определить Стоп:

Если Вы хотите, чтобы робот двигался без подключенного к нему провода, переключитесь на режим Загрузка, чтобы загрузить программу в робота:

Также нужно изменить код, в качестве блока для исполнения команды Начало программы использовав блок При запуске Arduino Uno:

Загрузите измененную программу в робота, воспользовавшись кнопкой Загрузить

Управление двумя моторами для движения по линии на одном датчике

Общий алгоритм для движения по линии с использованием одного датчика линии, определяющего, черная линия под ним или белое поле:

Общий алгоритм:

Если датчик на белом — ехать Вперед Влево

Если датчик на черном — ехать Вперед Вправо

Детализированный алгоритм:

  1. Начало
  2. Задать для Мотор левый Направление значение 7
  3. Задать для Мотор правый Направление значение 4
  4. Задать для Мотор левый Скорость значение 6
  5. Задать для Мотор правый Скорость значение 5
  6. Задать для Левый Линия значение 11
  7. Повторять всегда:

Для реализации данного алгоритма нужно создать две функции — благодаря которым робот едет Вперед Вправо (сворачивая по дуге вправо) и Вперед Влево (сворачивая по дуге влево). Для этого используется управление скоростями моторов, общий алгоритм:

1. Определить Вперёд Влево:
2. Левый мотор едет вперёд медленно
3. Правый мотор едет вперёд быстро

1. Определить Вперёд Вправо:
2. Левый мотор едет вперёд быстро
3. Правый мотор едет вперёд медленно

Примечание: для облегчения запоминания представьте, что сторона робота, на которой мотор едет быстрее, как бы “обгоняет” другую сторону, Вы сразу поймете, в каком направлении сворачивает робот (также см. занятие по управлению робота с помощью Bluetooth)
Детализированный алгоритм:

1. Определить Вперёд Влево:
2. Задать на цифровой пин Мотор левый Направление значение “низкий”
3. Задать на цифровой пин Мотор правый Направление значение “низкий”
4. Установить на порт Мотор левый Скорость ШИМ 100
5 Установить на порт Мотор правый Скорость ШИМ 200

1. Определить Вперёд Вправо:
2. Задать на цифровой пин Мотор левый Направление значение “низкий”
3. Задать на цифровой пин Мотор правый Направление значение “низкий”
4. Установить на порт Мотор левый Скорость ШИМ 200
5 Установить на порт Мотор правый Скорость ШИМ 100

Примечание: скорости 100 и 200 приведены ориентировочно и их надо будет отлаживать на конкретной конструкции.

Назад в Учебник по робототехническому конструктору Hobots L

0%