Чтение онлайн

на главную - закладки

Жанры

Создаем робота-андроида своими руками
Шрифт:

• Шина ввода/вывода 1 отображает состояние CdS датчика 1. Если сила света, попадающего на CdS 1 больше, чем на CdS 2, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня.

• Шина ввода/вывода 2 отображает состояние CdS датчика 2. Если сила света, попадающего на CdS 2, больше, чем на CdS 1, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня.

• Шина ввода/вывода 3 отображает

либо состояния датчика столкновений, либо слишком большую засветку CdS датчиков. В обоих случаях на выходе появляется сигнал высокого уровня.

Микроконтроллер 2. Микроконтроллер 2 проверяет состояние трех шин ввода/вывода и на основании полученной информации управляет движением и поворотом согласно таблице:

Соответственно шины 1 и 2 отражают состояние датчиков CdS, а шина 3 – состояние датчика столкновений.

Добавление состояния «спячки»

Я добавил состояние «спячки», соответствующее общему низкому уровню освещенности. Если оба CdS датчика освещены примерно одинаково, то робот движется вперед. Если датчики освещены в разной степени, то робот поворачивается соответственно направо или налево. Если поступает слишком много света или срабатывает датчик столкновений, то робот переходит в режим избегания.

Питание

Батарейный отсек робота содержит четыре элемента АА, обеспечивая напряжение питания 6 В. При проверке функционирования робота есть основания предполагать, что истощение батарей происходит достаточно быстро.

Программа

Блок-схема программы изображена на рис. 8.17. После включения питания ходовой двигатель отключен, и микроконтроллер начинает искать наиболее яркий источник света, поворачивая сервомотор. Если источник света имеет слишком большую яркость, то включается режим избегания. В режиме избегания ходовой двигатель включается в режим реверса; при этом ведущее колесо поворачивает направо или налево. Если освещенность не достигает уровня режима избегания, то робот поворачивается в направлении источника света и движется вперед. При замыкании датчика столкновений робот предполагает наличие препятствия и переходит в режим избегания. При выключении датчика столкновения (препятствия нет) программа переходит на начало, и процесс поиска и движения к наиболее яркому источнику света продолжается.

Рис. 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: ‘Да

Поделиться:
Популярные книги

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Отмороженный 6.0

Гарцевич Евгений Александрович
6. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 6.0

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Не кровный Брат

Безрукова Елена
Любовные романы:
эро литература
6.83
рейтинг книги
Не кровный Брат

Сумеречный Стрелок 3

Карелин Сергей Витальевич
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 3

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Темный Патриарх Светлого Рода 4

Лисицин Евгений
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 4

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Попала, или Кто кого

Юнина Наталья
Любовные романы:
современные любовные романы
5.88
рейтинг книги
Попала, или Кто кого

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Провинциал. Книга 7

Лопарев Игорь Викторович
7. Провинциал
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Провинциал. Книга 7