Прежде чем программировать движение по линии познакомимся с блоками расширения Quad RGB Sensor в составе Расширения Устройств среды mBlock5.
Доступно для устройств mBot2 и CyberPi.
Итак, у вас выбрано нужное устройство, жмете кнопку +Расширения и в расширениях для устройств выбираете Quad RGB Sensor. Жмем "добавить"
Появляется новый блок команд, позволяющих роботу использовать данный датчик.
Начнем с блока обнаружения цвета. Четырехканальный RGB-датчик может обнаружить:
- цвет
- оттенки серого
Если с цветами все более менее понятно по названиям из списка, то для обнаружения оттенков серого требуется выбрать "линия" или "фон".
Попробуем с цветами поработать. Соберем простую программу. Пусть робот двигается, пока обоими центральными датчиками (L1 и R1) не обнаружит красный цвет (значение на датчиках 1,1, т.е. оба обнаружили). Тогда пусть он остановится. Пример - на рисунке ниже:
Кстати, цифра 1 в "датчик QUAD RGB" обозначает номер подключенного к контроллеру датчика. Помним, что датчиков RGB к роботу можно подключить несколько, тогда можно будет выбирать, какой именно программируем, как раз задавая его номер.
Можно пробовать программу. Загрузите ее в контроллер робота. Теперь можно поставить робота на комплектное поле с цветными вставками на линии, выставить его на линию, и запустить, нажав кнопку А.
Если вы поставили робота ровно и он смог дойти до полоски красного цвета, то он должен остановится. Можно несколько раз попробовать переставить робота, например, запустить его перпендикулярно красной линии.
Да, вы, вероятно, уже догадались, что можно изменить значения в блоке и получить обнаружение цвета одним из датчиков. А можно сделать вариант, при котором остановка будет происходить, если ЛЮБОЙ из центральных датчиков обнаружит красный.
Так, например:
А можно проще, если посмотреть внимательно на варианты блоков. Можно использовать такой вариант:
Поэкспериментируйте с несколькими оттенками красного цвета, посмотрите, на какие робот реагирует, на какие нет. Например, считать красным наши пазлы с линиями робот отказался. Ну, они и действительно, скорее розовые)))
Датчик может обнаруживать цвета независимо от цвета подсветки, но для эксперимента можно попробовать поиграть с заполняющим цветом (подсветкой) , используя соответствующий блок (или менять длинным нажатием на кнопку на датчике).
В нашем варианте с розовым пазлом этот трюк не помог.
Что будем делать?
Для начала попробуем получить данные с датчика, вдруг поможет.
Получение значений датчика
RGB-датчик может выводить значения на основе обнаруженного им цвета или оттенков серого. Эти значения можно получить, используя блоки-отчёты. Пример использования (на красном цвете линии выдано значение 6):
Это пример для интерактивного режима, выводим значение с датчика в форме переменной. В режиме загрузки значения можно выводить на экран, попробуйте реализовать такой вариант самостоятельно.
Для подобных исследований интерактивный режим удобнее и проще программируется. Смещаем робота над цветами поля и смотрим, какие значения выводятся. Потом сможем использовать данную информацию.
В нашем случае и для голубого цвета фона пазла, и для розового, показывает 15....
Т.е. особой цифры не получилось. Но как быть, если мы хотим обнаружить именно данный розовый цвет?
Посмотрим на блоки. Среди них есть вариант определения цвета по RGB значениям:
Т.е. мы можем выставить значения, причем с определенной нами чувствительностью (т.е. допуском +- значениям).
Например, для красного цвета это вроде как
Пробуем:
Но... на нашем розовом поле он опять не останавливается, несмотря на такой допуск по чувствительности.
Далее варианты могут быть разные. Можно попробовать подобрать значения.
Данную задачу можно поручить какому-нибудь ученику в варианте проекта - предложить способы автоматизации или упрощения процедуры подбора параметров для пользовательского цвета.
Для меня проще вариант с каким нибудь графическим редактором, способным показывать RGB цвета на фотографии.
Фотографируем поле, пересылаем фото туда, где есть редактор, наводим на него инструмент (пипетка, например) и смотрим цвет.
Пробуем подставить...
И вот робот прекрасно останавливается на розовом цвете фона. Кстати, в силу большой разрешенной погрешности он так же хорошо начал останавливаться и на красном цвете базового поля. Так что теперь он реагирует на красный и розовый цвет в определенном диапазоне. Все другие цвета на поле и на пазлах игнорирует. Хороший результат, можно использовать)))
Ну вот, немного ближе познакомились с возможностями RGB датчика. В следующий раз продолжим. Удачи в экспериментах!