Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Robo-51 отслеживает черную линию




 

1. Откройте RIDE и создайте новый проект. Сделайте C код (см. Приложение 7.Г) и сохраните как файл act1701.c. Сборка проекта в HEX файле.

2. Запустите Robo-51 и HEX файл. Выключите питание и отключите загрузочный кабель.

3. Подготовьте демонстрационное поле сделать 1-дюймовый ширины черные линии на белой поверхности. Вы можете создать линию картины с вашей идеей.

4. Поместите Robo-51 над черной линией. Включите питание и выберите режим выполнения.

Соблюдайте операции.

Есть 4 условия для принятия решения в этой программе следующим образом, показанном на рис. 7.6.

 

Рисунок 7.6 – Программа отслеживания линий для Robo-51


Приложение 7.А

/*—————————————————————————————————-——————-————————-—-———————*/

// Program: Robo-51 escape object by GP2D120 sensor

// Description: Robo-51 move by dc motor and detect object by GP2D120 sensor

// Filename: act1301.c

// C compiler: RIDE 51 V6.1

/*———————————————————————————-——————-————————-————-——————————*/

#include <C51ac2.h> // Header include register of P89C51AC2

#include <lcd_robo51.h> // Module function LCD display

#include <dc_motor.h> // Module function drive DC motor

#include <gp2d120.h> // Module function drive DC motor

#include <delay.h> // Module function delay time

#define pow 200 // Define constant for power drive DC motor

/***************** Function drive robot forward ******************************/

void run_fd(int time_spin)

{

motor_fd(2,pow); // Drive left motor forward

motor_fd(1,pow); // Drive right motor forward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot backward ******************************/

void run_bk(int time_spin)

{

motor_bk(2,pow); // Drive left motor backward

motor_bk(1,pow); // Drive right motor backward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot turn left ****************************/

void turn_left(int time_spin)

{

motor_fd(2,pow); // Drive left motor forward

motor_bk(1,pow); // Drive right motor backward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot turn right ***************************/

void turn_right(int time_spin)

{

motor_bk(2,pow); // Drive left motor backward

motor_fd(1,pow); // Drive right motor forward

delay_ms(time_spin); // Delay for robot spin

}

/****************************** Main function ********************************/

void main()

{

unsigned int val; // Variable for keep distance

while(1) // Looping

{

val = dist(1); // Get distance from GP2D120

if(val<15) // Distance less than 15 cm?

{

run_bk(1000); // Backward 1 sec

turn_right(500); // Turn right 0.5 sec

}

else

{

run_fd(10); // Forward 10 ms

}

}

Приложение 7.Б

 

 

/*—————————————————————————————————————*/

// Program: Detect black line

// Description: Drive robot for finding the black line by IR reflect sensor

// Filename: act1501.c

// C compiler: RIDE 51 V6.1

/*—————————————————————————————————————*/

#include <C51ac2.h> // Header include register of T89C51AC2

#include <lcd_robo51.h> // LCD module function

#include <dc_motor.h> // DC motor module function

#include <sound_robo51.h> // Sound module function

#include <delay_robo51.h> // Delay time function

#include <adc_robo51.h> // ADC module function

#define pow 100 // Define constant for driving robot

#define ref 400 // Define constant the reference value for detection line

/***************** Function drive robot forward ******************************/

void run_fd(int time_spin)

{

motor_fd(2,pow); // Drive left motor forward

motor_fd(1,pow); // Drive right motor forward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot backward ******************************/

void run_bk(int time_spin)

{

motor_bk(2,pow); // Drive left motor backward

motor_bk(1,pow); // Drive right motor backward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot turn left ****************************/

void turn_left(int time_spin)

{

motor_fd(2,pow); // Drive left motor forward

motor_bk(1,pow); // Drive right motor backward

delay_ms(time_spin); // Delay for robot spin

}

/***************** Function drive robot turn right ***************************/

void turn_right(int time_spin)

{

motor_bk(2,pow); // Drive left motor backward

motor_fd(1,pow); // Drive right motor forward

delay_ms(time_spin); // Delay for robot spin

}

/****************************** Main function ********************************/

void main()

{

int left=0,right=0; // Define variable for keep input analog value

lcd_init(); // Initial LCD module

beep(); // Sound beep 1 time

 

while(1) // Infinite loop

{

left = analog(5); // Read input analog channel 5 (connect left sensor)

right = analog(4); // Read input analog channel 4 (connect right sensor)

if(left<ref || right<ref) // If any sensor detect black line

{

motor_stop(all); // Stop robot

beep(); // Beep after any sensor detect line

lcd_clear(); // Clear LCD display

if(left<ref)

{

lcd_putstr(line1,”Left:>> Line”); // Left sensor detects line

}

else

{

lcd_putstr(line1,”Left:>> Floor”); // Left sensor detects floor

}

if(right<ref)

{

lcd_putstr(line2,”Right:>> Line”); // Right sensor detects line

}

else

{

lcd_putstr(line2,”Right:>> Floor”); // Right sensor detects floor

}

while(1); // Break program

}

else

{

run_fd(10); // Drive robot forward

}

}

}




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 58; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopediasu.com - Студопедия (2013 - 2026) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.