ПРОСТОЙ РОБОТ НА МИКРОКОНТРОЛЛЕРЕ (Часть 3)

ПРОСТОЙ РОБОТ НА МИКРОКОНТРОЛЛЕРЕ (Часть 3)

 


 

Робот для соревнований.


Робот для соревнований КегельрингСледующим экспериментом с датчиком, реагирующим на отраженный свет, будет робот, движущийся в пределах области, ограниченной черной линией.

Схема робота останется такой же, как во второй части статьи "Простой робот на микроконтроллере: Робот с фотодатчиком".

Алгоритм, использованный в этом роботе, будет представлять собой следующую последовательность движений. Находясь на белом поле, робот будет двигаться вперед до тех пор, пока не наткнется на черную границу. Наткнувшись на линию, робот отъедет назад и повернется на небольшой угол. Затем алгоритм повторится.
 

/**********************************************************
ПРИМЕР 5 :: РОБОТ ДЛЯ СОРЕВНОВАНИЙ КЕГЕЛЬРИНГ :: MYROBOT.RU
***********************************************************/ 

#define F_CPU 1000000UL // указываем частоту в герцах

#include <avr/io.h>
#include <util/delay.h>

int main(void) // начало основной программы
{
 
 DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
 DDRD = 0x00; // все выводы порта D сконфигурировать как входы


 PORTD = 0xff; // установить "1" на всех выводах порта D,
 // включаем подтягивающие резисторы

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

 // ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

 if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
 {
 // -------------- включаем моторы вперед ---------------

 PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
 PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
 PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
 PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

 // -----------------------------------------------------
 }
 else
 {
 // ------------------ отъезд назад ------------------
 // -------- включаем моторы назад на 1,8 сек --------

 PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
 PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
 PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
 PORTC |= _BV(PC4); // установить "1" на линии 4 порта C

 _delay_ms(1800); // ждем 1,8 сек.

 // --------------------------------------------------

 // --------------------- поворот --------------------
 // правый мотор вперед, левый мотор стоп на 0,6 сек 

 PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
 PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
 PORTC |= _BV(PC3); // установить "1" на линии 3 порта C

 _delay_ms(600); // ждем 0,6 сек.

 // --------------------------------------------------
 }


 } // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы
 
 
Соревнования Кегельринг

   Смысл соревнования состоит в том, чтобы робот за наиболее короткое время, не выходя за пределы круга, очерчивающего ринг, вытолкнул расположенные в нем кегли.

   Диаметр ринга - 1 метр. Цвет ринга - белый, цвет ограничительной линии - черный. На ринге устанавливается 8 кеглей. Перед началом соревнования робот помещается в центр ринга.

Робот должен быть включен или инициализирован вручную в начале состязания по команде судьи, после чего в его работу нельзя вмешиваться.

   Запрещено дистанционное управление или подача роботу любых команд. Робот должен выталкивать кегли своим корпусом, применение механических или пневматических устройств для выталкивания кеглей запрещено.

Кегля считается вытолкнутой, если никакая ее часть не находится внутри круга, ограниченного линией.

Максимальная ширина робота - 20 см, длина - 20 см. Высота робота не ограничена.
Соревнования на Российской Олимпиаде Роботов

Данного робота можно использовать на соревнованиях "Кегельринг". Сделайте белый круглый ринг, ограниченный черной линией около 50 мм шириной (именно такая ширина ограничительной линии используется на соревнованиях "Кегельринг"). Внутренний диаметр круга - 1 метр. Ринг может быть сделан из листов белого ватмана. Расставьте в круге 8 кеглей (используйте в качестве кеглей пустые жестяные банки объемом 0,33 л. из-под напитков).
 
Кегельринг


Поставьте робота в центр ринга и включите. Объезжая ринг, робот начнет выталкивать банки одну за другой. Добейтесь такого угла поворота и длины отъезда робота, чтобы он не пропускал расставленные на ринге кегли.

Наиболее выигрышной будет конструкция робота с установленным спереди заборником. Он необходим для того, чтобы робот "захватывал" попавшиеся ему на пути кегли. Заборник должен быть вынесен вперед относительно датчика настолько, чтобы робот, подъезжая к ограничительной линии, мог полностью вытолкнуть кеглю с ринга.

Настройка робота для соревнований "Кегельринг" является увлекательнейшим занятием, а сами соревнования одними из самых азартных и зрелищных.
 
Информация взята с сайта http://myrobot.ru


Источник: http://myrobot.ru/stepbystep/r_firstbot3.php
Категория: *Робо*Техника | Добавил: admin1 (30.01.2017)
Просмотров: 2186 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar