КАТЕГОРИИ: Архитектура-(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) |
Program description
When program start, Robo-51 drive a beep for beginning. Robo-51 polls to read the value from both analog inputs which connect the Infrared Reflectors. The value from Left sensor stores to left variable and Right sensor to right variable. Compare both value with the reference value; ref. This is comparative condition: _ left<ref “True” means the Left sensor detects the black line. “False” means the Left sensor detects the white surface. _ right<ref “True” means the Right sensor detects the black line. “False” means the Right sensor detects the white surface. From condition testing of if(left<ref || right<ref), if the result is true the meaning will be
Case #1: left<ref is “true” and right<ref is “false” Case #2: left<ref is “false” and right<ref is “true” Case #3: left<ref is “true” and right<ref is “true” Robo-51 move forward until detects the black line. It stop and drive a beep and reports the detected condition from Case #1 to #3 on LCD module. At the upper line, it shows the operation of Left sensor and bottom line shows the operation of Right sensor. Пириложение 7.В
/*————————————————————————————————————————————————————————*/ // Program: Ping-Pong Robot // Description: Drive robot by black line reflection // Filename: act1601.c /*————————————————————————————————————————————————————————*/ #include <C51ac2.h> // Header include register of T89C51AC2 #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 250 // Define constant power drive robot #define ref 300 // Define constant reference compare track line int left=0,right=0; // Define variable for keep input analog value /***************** 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() { beep(); // Sound beep 1 time while(1) // Infinite loop { left = analog(5); // Read input analog channel 5(left sensor) right = analog(4); // Read input analog channel 4(right sensor) if(left>ref && right>ref) // if both sensors detect white { run_fd(20); // Drive forward else if(left<ref && right>ref) // if left sensor detects black, // right sensor detects white { turn_right(1000); // Drive turn right } else if(left>ref && right<ref) // if left sensor detect white // and right sensor detect black { turn_left(1000); // Drive turn left } else if(left<ref && right<ref) // if both sensors detect black { run_bk(20); // Drive backward } } } Приложение 7.Г
/*———————————————————————————————————————————————————————*/ // Program: Tracking line robot V1 // Description: Drive robot to tracking the black line // Filename: act1701.c // C compiler: RIDE 51 V6.1 /*———————————————————————————————————————————————————————*/ #include <C51ac2.h> // Header include register of T89C51AC2 #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 250 // Define constant power drive robot #define ref 400 // Define constant reference compare track line int left=0,right=0; // Define variable for keep input analog value /***************** 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() { beep(); // Sound beep at once 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) // Both sensors detect white { run_fd(20); // Move forward } else if(left<ref && right>ref) // Left sensor detects black and // Right sensor detects white { turn_left(20); // Turn left } else if(left>ref && right<ref) // Left sensor detects white and // Right sensor detects black { turn_right(20); // Turn right } else if(left<ref && right<ref) // Both sensors detect black { run_fd(20); // Move forward turn_left(20); // Turn left } } }
Задание по выполнению лабораторной работы:
1) Изучение принципов управления движением робота по заданной траектории. 2) Составление тестовой программы и её запуска на лабораторном макете. 3) Управление движением робота вдоль черной линии, программное управление роботом «по коридору». 4) Программное задание траектории движения робота. Контрольные вопросы: 1) Промышленные и мобильные роботы. 2) Мехатронные технологические машины. 3) Применение МС в автоматизации технического оборудования. 4) МС в автомобильном, морском, авиационном и др. видах транспорта. Лабораторная работа №8
Робот с дистанционным управлением Цель работы: Изучение работы робота с дистанционным управлением, дистанционное управление и чтение команд, управление движением IE-ROBO-51на инфракрасных лучах.
Основные теоретические сведения:
Дата добавления: 2017-02-01; Просмотров: 53; Нарушение авторских прав?; Мы поможем в написании вашей работы! |