КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! |