Робот на микроконтроллере избегающий препятствий - Роботы и программирование - Каталог статей - Роботы, программирование, AVR

Главная страница Каталог файлов Форум Фотоальбомы Гостевая книга Каталог сайтов Тесты
Меню сайта
Опрос
Как вы попали на наш сайт?
Всего ответов: 167
Категории раздела
Роботы и программирование [10]
Радиоэлектроника [13]
История [0]
Полезные мелочи [3]
Всякая полезная мелочь
Занимательные конструкции [2]
Новости [2]
Друзья сайта
114 Сайт по ремонту радиоэлектронной аппаратуры.Схемы,статьи,форум. Схемы, программы для расчетов, книги, форум, галерея и многое другое на нашем сайте
114
Extreme360: велоспорт, всё о велосипедах!
Магазин организации NRW myrobot.ru Софт бесплатно и без регистрации!
Главная » Статьи » Роботы и программирование

Робот на микроконтроллере избегающий препятствий
В интернете масса сайтов, которые предлагают вам сделать
самостоятельного робота, но воснавном это роботы "конструкторы",
поясняю: покупаеш в магазине отдельные части (там плату под
микроконтроллер, корпус и т. д.) лично мне такой робот не нравится, тем
более врятли тебе ктото поверит, что это ты сделал сам, да и правильно
сделают! В этой статье я расскажу вам, как можно сделать полностью
самостоятельного робота на микроконтроллере ATmega8 и драйвере двигателя
L293D. Основным компонентом и "мозгом" робота несомненно является
микроконтроллер и как и для всех микроконтроллеров ему понадобится
"зашить" программу, в нашем случае ей будет вот эта:

#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<<PIND0)))
// проверить "0" на
линии 0 порта D

               {

      // ------------------ отъезд назад ------------------

 PORTC &= ~_BV(PC5);  // установить "0" на линии 5 порта C    

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

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

  PORTC |= _BV(PC4); // установить "1" на линии 4 порта  C                       
delay(100);
// ждем 1 сек.

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

 

        // --------------------- разворот--------------------

 

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

          PORTC &= ~_BV(PC5); // установить "0" на линии 5 порта C

          PORTC |= _BV(PC3); // установить "1" на линии 3 порта C                     
delay(60);
// ждем 0,6 сек.

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

               else

               {

       // -------------- включаем моторы вперед ---------------

 

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

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

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

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

 

Поглазели на программу, теперь пора увидеть схему! Схему в студию!!



По сути эта схема достаточно простая, но внешность бывает обманчива...

Собранный и запрограммированный правильно робот должен при "виде"
препядствия отъехать назад и развернуться на месте.

Если робот вместо того чтобы отъезжать от препятствие таранит его то
скорее всего проблемма в фотоэлементе или в светодиоде (помните свет от
светодиода должен отразиться от препятствия и попасть на фотоэлемент
который в свою очередь должен на него отреагировать).

Весь архив с проектом находится тут: http://robomir.ucoz.ru/Robot.rar

Перейти:

●Схема L293D

●Простой программатор stk200

●Первый проект на микроконтроллере
Категория: Роботы и программирование | Добавил: Robomir (17.02.2010)
Просмотров: 9571 | Теги: Робот на микроконтроллере, AVR, ATmega8 | Рейтинг: 5.0/10
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Авторизуйся!
Поиск по сайту
Мини чат
Наша кнопка
114

Статистика

____________________
 
Онлайн всего: 1
Гостей: 1
Пользователей: 0

robomir.ucoz.ru 2016
www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Используются технологии uCoz