Приветствую Вас ГостьВторник, 26.09.2017, 10:18

Robostroi


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

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


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


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

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

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


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


#include <avr/io.h>

/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
unsigned short i, j, k; // объявляем переменные

for (i=0; i<ms; i++) // главный цикл формирования задержки
for (j=0; j<185; j++) // вложенный цикл формирования задержки
k++; // произвольное действие
}
/****************************************************/


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(1800); // ждем 1,8 сек.
// --------------------------------------------------

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

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

delay(600); // ждем 0,6 сек.
// --------------------------------------------------
}


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

} // закрывающая скобка основной программы


Соревнования в Эдвардсвильском Университете Южного Иллинойса (Southern Illinois University Edwardsville)

Соревнования Кегельринг

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

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

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

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

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

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


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

Кегельринг


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

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

Настройка робота для соревнований "Кегельринг" является увлекательнейшим занятием, а сами соревнования одними из самых азартных и зрелищных.

Желаем Вам успехов!




Как выглядит робот на соревнованиях Кегельринг, вы можете посмотреть на видеоролике в режиме он-лайн
(необходим Macromedia Flash Player) или скачать видеофайл.

В России соревнования роботов "Кегельринг" проводятся на Российской Олимпиаде Роботов.

Регламент соревнований можно прочитать здесь.

Дополнительная информация об одимпиаде роботов на сайте:
Мир Российской Олимпиады Роботов

Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 180
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Календарь новостей
«  Сентябрь 2017  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Реклама
    WMmail.ru - сервис почтовых рассылок WMlink.ru - рекламный брокер SB-MONEY.RU - Электронная коммерция, Сервисы для вебмастеров, Раскрутка
    OZON.ru
    Обмен SMS
    ПОЛУЧИТЬ:  
    НА:
Мини-чат