Информация о датчике расстояния
Так как датчик расстояния работает только в режиме Загрузка, установим в mBlock два расширения, необходимых для передачи данных с Arduino на компьютер:
Перед тем, как использовать датчик расстояния в сложных программах управления роботом, нужно убедиться, что он работает и правильно измеряет расстояние. Для этого опросим датчик и передадим информацию с него на компьютер, чтобы расстояние выводилось на экран, схема передачи расстояния:
При получении сообщения message в режиме загрузки:
Для принятия решений роботом о том, куда ему ехать на основе того, что он узнает расстояние до препятствия, используются ветвления
Что такое ветвление
Ветвление в программировании - это как развилка на дороге. Допустим, мы идем по дороге и видим развилку, где дорога разделяется на две части. Если мы выберем одну дорогу, мы пойдем в одном направлении, а если выберем другую дорогу, то пойдем в другом направлении. Точно также и в программировании, программа может разделиться на две части и в зависимости от определенного условия выполнить тот или иной блок кода
3. Иначе:
Робот с датчиком расстояния не может видеть, он похож на человека с вытянутой вперёд рукой, но с закрытыми глазами. Человек идёт вперед, пока не коснётся стены (то есть расстояние до стены станет меньше длины его руки), как только коснётся стены - остановится. Сделаем аналогичный алгоритм для робота. Робот должен опрашивать датчик и проверять расстояние до стены в бесконечном цикле, иначе он один раз проверит расстояние до стены и поедет не обращая внимание на стену.
Начало
Повторять всегда:
Иначе:
Иначе:
Вперёд
Определить Вперёд:
Определить Стоп:
Предыдущая программа была похожа на программу системы безопасности - например, робот в цехе завода едет по заданному пути, когда на его пути препятствие (например, человек) - останавливается, когда препятствия нет (человек прошел) - робот едет дальше. Также это похоже на алгоритм автомобиля с автопилотом (как Тесла). Напишем программу, которая дает роботу возможность объезжать препятствия, похоже на программу робота - пылесоса. Изменение прошлого алгоритма будет в том, что при обнаружении препятствия робот не останавливается, а разворачивается на месте (попробуем сделать разворот на 90 градусов):
Если Расстояние < 20:
Иначе:
Определить Вправо 90: