roboforum.ru

Технический форум по робототехнике.
Текущее время: 16 апр 2025, 12:26

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Пока ищю колеса
СообщениеДобавлено: 16 янв 2010, 01:37 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
контактный датчик уже установлен, хочу еще сделать несколько ик бамперов (счас как раз осваиваю), дальномер ставить не хочу, дороговато.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Пока ищю колеса
СообщениеДобавлено: 25 янв 2010, 13:49 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Придумал все же нехитрый алгоритм поведения робота, он конечно еще незакончен, но уже ездит :) еще планирую дописать процедуры случайного выбора скорости (шим) и времени, а так же процедуру обработки сигналов от датчиков если конечно руки дайдут. Только вот единственное разочерование, я в ходе испытаний вроде спалил половину одного из каналов ДД, теперь ездит только в перед и проворачивает (в обе стороны). Потом может поменяю каналы местами.
Вот код прошивы:
Код:
#include<mega8.h>
#include <delay.h>
#include <stdlib.h>


int direction;  //направление

void GO(int b){            //процедура движения в случайно выбранном направлении
  if(b == 1){
  direction = 0;
  direction = (rand())%140;
  if ((direction > 0) && (direction < 20)){                     //вперёд
     PORTB.5=1;
     PORTB.4=0;
   } else                                                       
       if ((direction > 21) && (direction < 40)){                //назад
         PORTB.5=0;
         PORTB.4=1;
   }       else
            if ((direction > 41) && (direction < 60)){               //вперед и влево
              PORTB.5=1;
              PORTB.4=0;
             
              PORTB.0=1;
              PORTB.3=0;
   }           else
                if ((direction > 61) && (direction < 80)){            //вперед и вправо
                   PORTB.5=1;
                   PORTB.4=0;
                   
                    PORTB.0=0;
                    PORTB.3=1;
   }                 else
                        if ((direction > 81) && (direction < 100)){            //назад и влево
                          PORTB.5=0;
                          PORTB.4=1;
                         
                          PORTB.0=1;
                          PORTB.3=0;
   }                         else   
                               if ((direction > 101) && (direction < 120)){         // назад и вправо
                                 PORTB.5=1;
                                 PORTB.4=0;
                                 
                                 PORTB.0=0;
                                 PORTB.3=1;
   }                               else
                                     if ((direction > 121) && (direction < 140)){     //стоп
                                       PORTB.5=0;
                                       PORTB.4=0; 
   }
 

} else                               PORTB.5=0;
                                     PORTB.4=0;
    } 
   
   
void PWM(int a){
if (a==1) {
OCR1AH = 0x03; // PWM(PD5) = OCR1A / 10.24
OCR1AL = 0x20; // 0x03FF это число 1023

TCCR1A = 0x83; // 10100011 
TCCR1B = 0x09; // 00001001 - start Timer*/
}
else { if (a==0) {
TCCR1A = 0x00; 
TCCR1B = 0x00;
}}
}   

void main(void)
{

DDRB=0xff;
PORTB=0x00;

DDRC=0xff;
PORTC=0x00;

while(1){

PWM(1);

GO(1);
PORTC.5=1;
delay_ms(500);
direction = 200;
GO(0);
PORTC.5=0;
delay_ms(500);

} }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Пока ищю колеса
СообщениеДобавлено: 25 янв 2010, 13:51 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Может как-то уже отделить или переименовать тему и поправить первый пост? Я вот чисто случайно в неё зашел, и очень удивился найти в теме "пока ищу колёса" программный код и обсуждение алгоритмов поведения робота :pardon:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 25 янв 2010, 19:01 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Зацените видео:
http://www.youtube.com/watch?v=NcKmbaAqu08


Последний раз редактировалось CiSi 25 янв 2010, 19:07, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 25 янв 2010, 19:05 
Не в сети
Аватара пользователя

Зарегистрирован: 30 окт 2009, 12:44
Сообщения: 47
Откуда: Санкт-Петербург
ФИО: Никита
Отлично!!! :good: :Bravo:

_________________
Смотрю голубыми глазами сквозь розовые очки
и мне всё фиолетово.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 25 янв 2010, 19:06 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Спасибо!
А как мне сразу сюда ролик вставить?

>MegaBIZON
Ага все понятно! :beer:


Последний раз редактировалось CiSi 25 янв 2010, 19:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 25 янв 2010, 19:26 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2007, 00:34
Сообщения: 6285
Откуда: Масква
Я вставил - погляди как сделано:

Код:
Зацените видео: [youtube]NcKmbaAqu08[/youtube]
[url]http://www.youtube.com/watch?v=NcKmbaAqu08[/url]

_________________
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 14 фев 2010, 15:55 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Недавно приделал бампер, а руки дошли до написания обработки события после его срабатывания только сейчас. И тут возник вопрос: после срабатывания бампера процедура основного движения должна сразу же прерываться, но у меня это неполучается.
сделал пока так:
while(PINC.4 ==1){ //работать пока не сработал бампер
GO(); //процедура основного движения
}
если сработал бампер, то сначало завершится процедура основного движения, а только потом будет отъезд от препятствия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 14 фев 2010, 18:14 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
а что мешает внешние прерывания использовать?

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 14 фев 2010, 18:54 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Точно! спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 14 фев 2010, 23:59 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Отлично, с прерываниями вроде разобрался! Бампер работает! :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 15 фев 2010, 01:34 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
Вот и ладушки :)

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 15 фев 2010, 01:42 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Еще надо с ацп разобраться, для измерения питающего напряжения аккумуляторов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 15 фев 2010, 11:13 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
"Пrавильным путем идёте, товаrищ!"(с) :wink:
Резистивный делитель параллельно батарее питания, а среднюю точку на вход АЦП :)
Если есть свободные ноги, можно прицепить простейшую индикацию из светодиодов: нижний предел (требуется зарядка), нормальный заряд, зарядка окончена (верхний предел), или вариации на эту тему :)

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой робот 8-298
СообщениеДобавлено: 15 фев 2010, 11:32 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2007, 16:11
Сообщения: 1027
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел
Если я правельно понял то надо так подключать, только вот куда подключить свободный вывод резистора. и какие должны быть их наминалы?


Вложения:
1.jpg
1.jpg [ 34.14 КиБ | Просмотров: 2423 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO