roboforum.ru

Технический форум по робототехнике.

Небольшой робот 8-298

Обсуждаем рождающиеся мысли и результаты экспериментов.

Re: Пока ищю колеса

Сообщение CiSi » 16 янв 2010, 01:37

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

Re: Пока ищю колеса

Сообщение CiSi » 25 янв 2010, 13:49

Придумал все же нехитрый алгоритм поведения робота, он конечно еще незакончен, но уже ездит :) еще планирую дописать процедуры случайного выбора скорости (шим) и времени, а так же процедуру обработки сигналов от датчиков если конечно руки дайдут. Только вот единственное разочерование, я в ходе испытаний вроде спалил половину одного из каналов ДД, теперь ездит только в перед и проворачивает (в обе стороны). Потом может поменяю каналы местами.
Вот код прошивы:
Код: Выделить всёРазвернуть
#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);

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

Re: Пока ищю колеса

Сообщение =DeaD= » 25 янв 2010, 13:51

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

Re: Небольшой робот 8-298

Сообщение CiSi » 25 янв 2010, 19:01

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

Re: Небольшой робот 8-298

Сообщение sneg » 25 янв 2010, 19:05

Отлично!!! :good: :Bravo:
Смотрю голубыми глазами сквозь розовые очки
и мне всё фиолетово.
Аватара пользователя
sneg
 
Сообщения: 47
Зарегистрирован: 30 окт 2009, 12:44
Откуда: Санкт-Петербург
ФИО: Никита

Re: Небольшой робот 8-298

Сообщение CiSi » 25 янв 2010, 19:06

Спасибо!
А как мне сразу сюда ролик вставить?

>MegaBIZON
Ага все понятно! :beer:
Последний раз редактировалось CiSi 25 янв 2010, 19:29, всего редактировалось 1 раз.
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: Небольшой робот 8-298

Сообщение MegaBIZON » 25 янв 2010, 19:26

Я вставил - погляди как сделано:

Код: Выделить всёРазвернуть
Зацените видео: [youtube]NcKmbaAqu08[/youtube]
[url]http://www.youtube.com/watch?v=NcKmbaAqu08[/url]
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............
Аватара пользователя
MegaBIZON
 
Сообщения: 6285
Зарегистрирован: 12 янв 2007, 00:34
Откуда: Масква

Re: Небольшой робот 8-298

Сообщение CiSi » 14 фев 2010, 15:55

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

Re: Небольшой робот 8-298

Сообщение Vovan » 14 фев 2010, 18:14

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

Re: Небольшой робот 8-298

Сообщение CiSi » 14 фев 2010, 18:54

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

Re: Небольшой робот 8-298

Сообщение CiSi » 14 фев 2010, 23:59

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

Re: Небольшой робот 8-298

Сообщение Vovan » 15 фев 2010, 01:34

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

Re: Небольшой робот 8-298

Сообщение CiSi » 15 фев 2010, 01:42

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

Re: Небольшой робот 8-298

Сообщение Vovan » 15 фев 2010, 11:13

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

Re: Небольшой робот 8-298

Сообщение CiSi » 15 фев 2010, 11:32

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

Пред.След.

Вернуться в Идеи

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

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