предполагает наличие препятствия и переходит в режим избегания. При выключении датчика столкновения (препятствия нет) программа переходит на начало, и процесс поиска и движения к наиболее яркому источнику света продолжается.

Рис. 8.17. Блок-схема программы

Программа написана для компилятора PICBASIC и введена непосредственно в PIC16F84. Без особых изменений программа может быть написана на версии PICBASIC Pro. Программа может быть подстроена под имеющиеся экземпляры CdS датчиков, используемых двигателей и т. п.

Программа 1

‘Микроконтроллер 1

start:

High 4: low 4 ‘Мигание светодиода

b7 = 0

button 5,0,255,0,b7,1,avoid ‘Проверка препятствия

pot 7, 255, b0 ‘Считывание датчика CdS 1

pot 6, 255, b1 ‘Считывание датчика CdS 2

if b0 <= 250 then skip ‘Достаточно темно?

If b1 >= 250 then slp ‘Да

skip: ‘Нет

if bo > 25 then skip 2 ‘Слишком много света

if b1 < 25 then avoid ‘Да

skip2: ‘Нет

if bo = b1 then straight ‘Освещенность одинакова, вперед

if bo > b1 then greater ‘Проверить освещенность

if bo < b1 then lesser ‘Проверить освещенность

straight:

high 0: high 1: low 2 ‘Сообщение микроконтроллеру 2

goto start ‘Движение прямо

greater:

b2 = b0 – b1 ‘Проверка разности освещенности

if b2 > 10 then rt ‘Если больше 10, поворот направо

goto straight ‘Если нет, движение прямо

lesser:

b2 = b1 – b0 ‘Проверка разности освещенности

if b2 > 10 then lt ‘Если больше 10, поворот налево

goto straight ‘Если нет, движение прямо

rt: ‘Поворот направо, посылка

high 0: low 1: low 2 ‘Сообщение микроконтроллеру 2

goto start

lt: ‘Поворот налево, посылка

low 0: high 1: low 2 ‘Сообщение микроконтроллеру 2

goto start

slp: ‘Режим спячки, посылка

low 0: low 1: low 2 ‘Сообщение микроконтроллеру 2

goto start

avoid: ‘Режим избегания, посылка

low 0: low 1: high 2 ‘Сообщение микроконтроллеру 2

goto start

Программа 2

‘Микроконтроллер 2

b4 = 150 ‘Установка среднего положения сервомотора

start:

peek 6, b1 ‘Чтение данных микроконтроллера 1

let b0 = b1 & 7 ‘Маскирование кроме первых трех битов

if b0 = 0 then slp ‘Время спячки

if b0 = 1 then rt ‘Поворот направо

if b0 = 2 then lt ‘Поворот налево

if b0 = 3 then fw ‘Движение прямо

if b0 = 4 then avoid ‘Режим избегания

goto start

slp:

low 4: low 5 ‘Выключить двигатель

pulsout 3, b4 ‘Запустить сервомотор

pause 18 ‘Задержка включения сервомотора

goto start ‘Чтение данных микроконтроллера 1

rt: ‘Поворот направо

high 4: low 5 ‘Движение вперед

if b4 > 200 then rt1: ‘Поворот направо максимален

b4 = b4 + 1 ‘Нет

rt1: ‘Да

pulsout 3, b4 ‘Поворот сервомотора

pause 18 ‘Задержка ( 55 Гц)

goto start ‘Чтение данных микроконтроллера 1

lt: ‘Поворот налево

high 4: low 5 ‘Движение вперед

if b4 < 100 then lt1: ‘Поворот налево максимален

b4 = b4 – 1 ‘Нет

lt1: ‘Да

pulsout 3, b4 ‘Поворот сервомотора

pause 18 ‘Задержка (55 Гц)

goto start ‘Чтение данных микроконтроллера 1

fw: ‘Прямо

high 4: low 5 ‘Движение прямо

pulsout 3, b4 ‘Поворот сервомотора

pause 18 ‘Задержка (55 Гц)

goto start ‘Чтение данных микроконтроллера 1

avoid:

low 4: high 5 ‘Движение назад

if b4 > 150 then vr ‘Проверка. Перемена направления направо?

if b4 <= 150 then vl ‘Проверка. Перемена направления налево?

vr: ‘Перемена направления вправо

b5 = b4 – 30 ‘Направление поворота

for b6 = 1 to 120 ‘Цикл задержки 2 с

pulsout 3, b5 ‘Поворот сервомотора

pause 18 ‘Задержка (55 Гц)

next b6 ‘Конец цикла

goto start ‘Чтение данных микроконтроллера 1

vl: ‘Перемена направления влево

b5 = b4 + 30 ‘Направление поворота

for b6 = 1 to 120 ‘Цикл задержки 2 с

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату