Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин
Добрый вечер всем.занялся сборкой робота Fibo которого нашел в просторах инета.есть одно желание научиться писать и понимать программу.Кто знает ценные электронные книги или любую инфу выложите сюда или дайти ссылку чтобы научиться написанию программ.я не могу понять просто куда на какой порт и какие датчики надо подключать в этой программе
for(i=0; i<6; i++) //в цикле опросим все сенсоры { a=poll_sensor(i); //опрос сенсора 3 раза для исключения шума b=poll_sensor(i); //по результатам выставляем глобальный флаг с номером сработавших сенсоров c=poll_sensor(i); if(c>=gporog[i]) c=1; else c=0; if(b>=gporog[i]) b=1; else b=0; if(a>=gporog[i]) a=1; else a=0; c=c+b+a; if(c>=2)sensor_state|=1< else sensor_state&=~(1< }; if(sensor_state!=0) { env_free=0; //глобальный флаг step=0; //если препятствие есть, то обнуляем шаг }; }
void delay_walk (unsigned int time) //на вход задержка милисекундах, макс 65535, { //схлапывающаяся задержка, обнуляется как только обнаруживается препятствие gtime=time; while(gtime!=0) { check_env(); if (sensor_state != sensor_state_last && sensor_enable == 1) //если произошло изменение значения сенсоров и они разрешены { delay_ms(200); //пусть машинка прокатится по инерции к препятствию 0,2с что бы исключить различную дальность срабатывания датчиков break; }; //если произошло изменение в показаниях сенсоров то рвем задержку }; //время проверки окружения 20 мкс (0,2мс) }
//далее функции управления двигателями void f(int t) // Вперед { PORTD.1=0; PORTD.2=1; PORTD.3=0; PORTD.4=0; if(t!=0) delay_walk(t); }
void go(unsigned char napr) //Выборка направления и отдача команды двигателям { switch(napr) { case 0: stop(gTimeOfMove); break; case 1: f(gTimeOfMove); break; case 2: fr(gTimeOfMove); break; case 3: fl(gTimeOfMove); break; case 4: b(gTimeOfMove); break; case 5: br(gTimeOfMove); break; case 6: bl(gTimeOfMove); break; }; }
unsigned char next_move(void) //выясняем следующий ход { int a, b, c; a = rand()/327; //0..99 число c=0; for (b=0; b<=6; b++) //поик по таблице { if(a > c && a < (d[now][b]+c) ) break; c=c+d[now][b]; }; if (b==7)b=1; //если b будет 7 то контроллер зависает, нужно искать ошибку в алгоритме, пока просто закроем эту дыру now = b; return b; };
void decision(void) //функция, которая будет принимать решения на базе показаний датчиков { if (sensor_state==0b00000010) //если сработал какой то датчик с боков то запрещаем движение соотв бока disable_FL(); if (sensor_state==0b00000100) disable_FR(); if (sensor_state==0b00001000) disable_BL(); if (sensor_state==0b00100000) disable_BR(); //ниже уже срабатывание 2 и более датчиков if (sensor_state==0x03 || sensor_state==0x07 || sensor_state==0x05 || sensor_state==0x01) disable_allF();
if (sensor_state==0x18 || sensor_state==0x10 || sensor_state==0x30 || sensor_state==0x38) disable_allB(); //env_free у нас сбрасывается в 0 если есть препятствие if (sensor_state==0 && env_free!=1) //если сенсторы дают ноль но вокруг где то препятствие было { restore(); }; if (sensor_state!=0) //в любом случае если сработал датчик надо остановиться подумать { now=0; stop(); };
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 15,625 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off
while (1) { now=1; for (i=0;i<=5;i++) //Помигаем светодиодом после включения, заодно задержка перед троганием что бы успеть отбежать { led_on(); delay(500); led_off(); delay(500); };
Как вариант, раз в просторах интернета нашли, то и будьте добры всю нужную нам информацию и ссылки предоставить, а то название ну ни-о-чем не говорит ИМХО )
--------------------------------------------- похожий робота есть тут http://projects.roboclub.ru/?attempt но мне важнее научиться понимать и правильно самостоятельно писать программы и для этого я прошу помоши в поисках нужных уроков,заданий и нормальных и доступных книг желательно.заранее спасибо
timur999888, )) Эхх... Codepad имелось ввиду (по первой ссылке в поисковике) - интернет ресурс, на который постится программный код. Потом он публикуется и нужно просто скопировать на него ссылку. Но не факт, что сейчас именно кто-то ответит или подскажет, всё-таки лето, каникулы, отпуска, люди отдыхают.
timur999888, Вы слишком туманно и неточно формулируете свои вопросы. Как например понимать выражение: "..Скопировал программу в программу" ?! Предлагаете на форуме решить множество ваших проблем и дать один ответ. Так не бывает! Ни кто за вас учить программирование не будет, ни кто за вас писать программу не будет. Ссылки на интересующие вас книги по программированию можно за пару секунд получить в любом поисковике, набрав соответствующий запрос. Рекомендую начинать с простых, элементарных небольших программок с реакцией только на свет. Кстати, если уж вы собираете робота, потрудитесь самостоятельно нарисовать электрическую схему. Начинать сборку по нескольким ссылкам в стиле "приблизительно эта схема" не стоит, вы зря потратите своё и чужое время. Определитесь со схемой прежде чем программированием заниматься.
Спасибо за подсказку. выражение :скоприровал программу в прогрмамму я имел введу скопировал программу на писаннную на CodeVisionAVR для управлением робота в программу Codepad.и у меня траффика столько нету чтобы все книги подрят качать с инета,поэтому я обратился за помошью именно сюда.приветл примерного робота чтобы люди поняли что я добиваюсь от своего.за меня программу писать тоже не надо,я добиваюсь понять ее сам и написать ее тожесам.задаю глупые и туманные вопросы спросите почему!? потому что я не знаю что и как толом назвать.надеюсь я все правильно написал и растолковал.спасибо
Добавлено (01.08.2012, 19:17) --------------------------------------------- надеюсь в этот раз я правильно сделал и добавляю ссылку на программу для робота написанную на CodeVisionAVR ссылка http://codepad.org/Z6WfzkUh
Общайтесь с друзьями в нашем Online-чате по робототехнике
Мы рады, что в России открывается все больше кружков по робототехнике и мы стараемся прикладывать к этому свои усилия начиная с 2008 года :) Мы будем очень рады видеть в чате живое общение, обмен опытом между учащимися в робототехнике и просто увлеченными в этом направлении людей. Мы всегда онлайн, приходите, спрашивайте, помогайте другим - давайте сделаем Мир чуточку лучше!
Чтобы не потерять чат и быть всегда с нами на связи - откройте окно чата в новом окне браузера и добавьте его в заколадки. Открыть в новом окне