Вновь возник вопрос от одного из пользователей, еще раз обращаемся к теме "как использовать с mBot2 датчики сторонних производителей". Сегодня рассмотрим пример с датчиком касания, которого нет в базовом наборе mBot2, но который часто нужен для реализации каких-то заданий или проектов.
Конечно, можно поискать фирменный датчик mBot2, но он явно будет не дешевым, да и в домашних условиях под рукой часто оказываются самые простые концевики от распространенных Arduino проектов.
Они бывают очень разные, для нас удачнее оказались варианты с продольным расположением контактной группы и с отверстиями для крепления. Типа таких:
У нас под рукой был похожий модуль от qifei. Вот такой сегодня и приделаем к mBot2.
1. Добавляем к конструктиву держатель датчика и датчик.
Тут что у кого есть. Есть детали от набора с серво - отлично, есть просто металлический конструктор - тоже хорошо, можно также приспособить детали от лего, или какие то уголки пластиковые из хозяйственных магазинов. Нам нужно на что то установить датчик. В нашем случае - уголок от какого то набора дополнений MakeBlock
Кстати, обратите внимание, у меня на фото датчик к уголку прикреплен на белые клипсы. Можно и на обычные винты с гайками, подходящими к отверстиям датчика. Но мы часто используем клипсы из наборов расширений mBot2, они удобные и многоразовые. Воткнул, потом вставил внутреннюю часть и нажал. Все, закреплено. Единственно - в случае винтов, да и с клипсами, лучше добавить пластиковые шайбы, чтобы избежать касания металла элементами датчика.
Провода присоединяем к разъему S1
Почти все готово. Можно уже использовать, но рекомендую добавить упор с другой стороны, на уровне нажатого датчика касания. Опять же, вариантов исполнения может быть много. Мы использовали деталь из расширения:
Обратите внимание - крепление опять выполнено клипсами. Только теперь черными, они покороче и удобнее при креплении тонких деталей между собой.
Зачем все это городить? Чтобы робот сохранял направление "прямо" при касании, иначе возможен завал в сторону. В целом, для выравнивания робота в тех же лабиринтах можно вообще использовать два датчика касания, но разъем занимать жалко, обычно в таких задачах на S2 вешается дальномер Sharp, например.
2. Выясняем, что показывает датчик.
Чаще всего, поставив датчик, стоит выяснить, что он показывает в разных состояниях, какие данные передает на порт S1.
Можно и так предположить, что у датчика касания явно показания будут 1 или 0, а потом выяснять какое нужно подставить "методом научного тыка". Но есть способ проще.
Присваиваем значения с порта переменной и смотрим, что она показывает. Для этого удобен режим ОНЛАЙН. Если решите использовать режим загрузки, придется выводить результат на экран. Тоже возможно, попробуйте.
Но в ОНЛАЙН режиме проще. Собрали простую программу, просто по ней щелкнули для запуска и смотрим на переменную. Жмем на концевик датчика - смотрим, что поменяется. Переменную создаем сами, мы назвали ее touch.
В нашем варианте выяснено, что в ненажатом состоянии показывается 1, а при нажатии 0. Можно программировать касание.
3. Создаем программу.
Соберем простую программу. Задача: при нажатии на кнопку А робот едет до касания преграды. Потом чуть отъезжает и поворачивается на 90 градусов. Такой вариант можно использовать в тех же лабиринтах, особенно когда у вас один дальномер. Тогда касанием определяем препятствие, поворачиваемся и далее можно ехать вдоль стены с использованием дальномера.
Заодно в программе можно потренироваться в выводе информации на экран, а также в использовании комментариев. Напомню, что отличные блоки -комментарии создал А.Чернов, преподаватель из Москвы. Это расширение называется Comment.
Программа может быть такая:
Поворот на 90 можно подкорректировать, отсмотрев, как поворачивает робот. Например, у нас точнее поворот при значении 91.
Все, пожалуй. Программа не сложная. По сути можно значительно упростить, убрав часть элементов. Например, так:
Попробуйте, посмотрите за роботом. Попробуйте различные варианты движения. Экспериментируйте!