Поиск света

14-11-2013, 20:30
Просмотров: 1162
Эта программа лучше всего работает, когда робот находится в зашторенной комнате или плохо освещенном помещении. Она наиболее эффективна в том случае, когда в комнате присутствует только один источник света. На послу не должно быть каких-либо препятствий. Роботу необходим фотоэлемент и пара бамперов.
Поиск света

Робот "Искатель" определяет направление на источник света в процессе поворота на месте с непрерывным опросом сигнала от фотоэлемента.
Трубка, надетая на фотоэлемент, ограничивает угол обзора примерно десятью градусами. Как только робот распознает наличие перед, ним света, он прекращает поворачиваться, входит в режим прямолинейного движения и начинает двигаться к источнику света, перемещаясь вперед в течении около трех секунд. Затем он останавливается и опрашивает состояние бамперов.
Если бамперы сигнализируют о том, что робот столкнулся с препятствием, то, скорее всего, достигнута лампа или окно.
Робот немного отъезжает назад, выключает светодиод и программа на этом завершается. Если же бамперы не сигнализируют о наличии контакта, то опять считывается сигнал с фотоэлемента, и, если свет все еще виден, робот возобновляет движение вперед. Если свет не виден, то робот переходит в начало программы и опять начинает искать свет.
Общее количество сканирований ограничено числом 128. При этом сканированием считается один поворот влево длительностью 0,2 с.
Всякий раз после потери источника света роботу может понадобиться несколько сканирований. Это число сохраняется в регистре, помеченном в начале программы как scans. Всякий раз, когда робот теряет направление, scans может декрементироваться несколько раз.
Если после 128 отсчетов источник света не обнаружен, это может означать или то, что он заслонен каким-то крупным объектом, или что лампа была выключена. В этом случае робот переходит к выполнению подпрограммы distress, в ходе чего он выключает светодиоды и остается неподвижным, взывая о помощи путем подачи звуковых сигналов.
Вместо остановки и подачи звуковых сигналов робота можно было бы запрограммировать на выход в новую исходную точку с повторным поиском источника света в надежде обнаружить его из другой точки помещения. Эту процедуру можно повторить несколько раз вплоть до 1 момента обнаружения света.
Обратите внимание, что в этом режиме вызываются подпрограммы delay и longdelay.

Источник: delete-it.ru
Автор: ziko
Опубликовано пользователем: 81 (смотреть все)
Комментарии: