Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач 1 общага.docx
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
3.15 Mб
Скачать

Программа на с

#include<motor.h> //подключение библиотеки моторов

#include<stdlib.h> //подключение библиотеки преобразования данных

#include<sleep.h> //подключение библиотеки задержки времени

#include<analog.h>

#include<in_out.h> //подключение библиотеки вывода информации

main() //главная программа

{ //открытие главной программы

intsensor=0;

char i=0;

sleep(500);

while(1) //бесконечныйцикл

{

sensor=0;

for (i=0;i<5;i++)

{

sensor=(sensor+analog(4)); //считывание данных с датчика

}

sensor=(sensor/5); //усреднение

if (sensor>184) //до препятствия 14 сантиметров

{

s_left(60); //влево на 60% мощности

sleep(200); //пауза 0.2 секунды

}

else //если нет препятствий, то

{

forward(60); //вперед на 60% мощности

}

}}

Таким образом, мы рассмотрели работу инфракрасного бесконтактного датчика GP2D120. И написали программу на языке С для бесконтактного обнаружения объектов.

Задача 4: Движение за движущимся объектом.

Данная задача представляет собой усложненный вариант задачи 3. С тем условием, что роботу нужно будет двигаться за объектом, держась на расстоянии от него.

начало

S1=0 s2=0 s3=0

да нет

S2>225&&S2<250

S2<205

да н

Forward(0)

ет

да

Forward(30)

S2>250

нет

Forward(-30)

S1<205&&S2<205&&S3<250

да нет

S_left(30)

s1>250&&s2<205 &&s3<205

да нет

S_left(30)

КОНЕЦ

#include<stdlib.h>

#include <motor.h>

#include <sound.h>

#include <analog.h>

#include <in_out.h>

#include <sleep.h>

void main()

{

unsignedint sensor1,sensor2,sensor3;

unsigned char i=0;

sleep(200);

while(1)

{

sensor1=0; sensor2=0; sensor3=0;

for (i=0; i<5;i++)

{

sensor1=(sensor1+analog(2)); sensor2=(sensor2+analog(1)); sensor3=(sensor3+analog(0));

}

sensor1=(sensor1/5); sensor2=(sensor2/5); sensor3=(sensor3/5);

if(sensor2>225 && sensor2<250)

forward(0);

if(sensor2<205 )

forward(30);

if( sensor2>250)

forward(-30);

if(sensor1<205 && sensor2<205 &&sensor3>250 )

s_left(30);

if(sensor1>250 && sensor2<205 &&sensor3<205 )

s_left(-30);

}

}

Задача 5: Дистанционное управление

В данной задаче мы рассматриваем технику приема данных, используя пульт дистанционного управления ER-4.Пульт передает данные по последовательному каналу. Передаваемые данные моделируют несущую частоту 38 кГц. Робот должен быть оборудован ИК-приемником 38 кГц для демодулирования полученных данных.

Можно использовать пульт ER-4 для управления движением робота.

Пульт дистанционного управления ER-4

  • Рабочая дистанция от 4х до 8ми метров на открытом пространстве.

  • 4 кнопки для передачи команд

  • Малое энергопотребление

  • Питание от2.4-3.0 В от двух батареек АА

  • Передача последовательных данных в соответствии со стандартом RS-232со скоростью 1200 bps в формате 8N1

ИК-приемник ZX-IRM

При передаче данных по ИК-каналу на большие расстояния(5...10м) используется несущая частота 38 кГц. Таким образом, приемник должен демодулировать несущую частоту 38 кГц. После этого передать последовательные данные в микроконтроллер. Если несущая частота 38 кГц отсутсвует, то на выходе будет логическая «1». В противном случае, если детектируется 38 кГц, то на выходе будет логический «0».