Уже в продаже: первая в своем роде книга «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
Открыт набор на БЕСПЛАТНОЕ ОБУЧЕНИЕ в кружке BEAM-робототехника на 2022 - 2023 год!
Для учащихся г. Санкт-Петербург: Уважаемые учащиеся и родители! Мы сообщаем Вам о начале открытой регистрации в кружок "BEAM-робототехника (радиоэлектронные системы управления)" Центра робототехники Президентского физико-математического лицея №239 на новый 2022-2023 учебный год!
Записаться в нашу группу может совершенно любой учащийся города Санкт-Петербург в возрасте от 10 - 18 лет. Обучение в кружке полностью бесплатное. В рамках обучения в кружке ребята получат необходимые теоретические и практические знания по электротехнике, схемотехнике, созданию электронных схем и своих собственных печатных плат для роботов. Научатся работать с ручными инструментами, 3D-принтерами для изготовления деталей робота, лазерным станком для изготовления корпусов робота. Количество свободных мест - ограниченное, успейте подать Вашу заявку первыми! Перешлите этот пост своим друзьям и знакомым, кого может заинтересовать BEAM-робототехника
***
Давайте поближе разберемся, что же мы изучаем на кружке BEAM-робототехники. И так, приступим:
1. Вы начинающий робототехник Смотрите видео BEAM-робототехника
Вы новенький в робототехнике. Вам интересно это современное направление, вы очень хотите научиться создавать крутых роботов самостоятельно, но вы пока не знаете как именно это делать? Не беда! Мы с удовольствием обучаем начинающих робототехнике всем необходимым навыкам настоящего робототехника, с которыми в последствии вы с легкостью будете собирать крутых роботов , участвовать в соревнованиях , выставках или просто делать крутые поделки для себя. Для этого мы открыли специальное направление: Радиоэлектроника (#BEAM-роботы). В ходе обучения в этом кружке вы научитесь понимать и разбираться в электронике - знать что такое резистор, транзистор, светодиод, мотор и как это работает. Закон #Ома - куда же без него :) Вы изучите схемотехнику - будете разбираться и уметь читать схемы - без этого робота не сделать. Вы научитесь делать свои собственные платы роботов (куда паяют детальки по крутому - без проводков!) Вы поработаете с механикой - нужно знать как и каким образом использовать моторчики, редукторы и различные хитрости их применения. Конечно же научитесь правильно и профессионально паять - это очень важно, иначе ваши роботы постоянно будут разваливаться. Также в рамках этого кружка вы сможете собрать несколько роботов для участия в соревнованиях, и выставках, так как мы считаем, что ваш творческий потенциал очень важен для робототехники в целом.
***
В этом году мы соберем с вами шагающих роботов, будем участвовать в соревнованиях "шагающих роботов", роботов для "следование по линии", роботов для участия в "сумо", а также в творческих выставках.
*** 2. Как подать заявку в кружок?
Прошлый год показал, что желающих заниматься аналоговой робототехникой, создавать beam'ов и участвоват ьс ними в соревнованиях - достаточно много. Поэтому на новый учебный год мы решили увеличить количество мест, создав две группы.
Первая группа по BEAM-робототехнике #261РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана на ребят, кто только начинает изучать робототехнику и кому необходимо получить базовые знания по электротехнике, схемотехнике, и самим бим-роботам. Для того, чтобы записаться в группу 261РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=796 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Вторая группа по BEAM-робототехнике #371РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана для учащихся, кто уже сталкивался с направлением BEAM или сам изучал электротехнику и схемотехнику, кто уже принимал участие в соревнованиях с этими роботами. В рамках этой группы мы будет улучшать ваши теоретические и практические навыки, создавать сложных роботов и большую часть занятий посвящать интересным проектам и соревнованиям. Для того, чтобы записаться в группу 371РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=797 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Преподаватель данного направления: Мельников Сергей Алексеевич, педагог дополнительного образования Президентского физико-математического лицея №239, руководитель образовательного проекта SERVODROID - Центр робототехники для начинающих. Группа № 261РЭ и 371РЭ. Будьте внимательны, при заполнении анкеты.
*** Краткий план годового обучения:
1. Повторение теоретических знаний по электротехнике, схемотехнике, радиоэлектронике. Закрепление знаний на практике на основе создания самых простых конструкций роботов.
2. Создание роботов для участия в соревнованиях и выставках. Творческие проекты. Много много соревнований
3. Закрепление знаний для дальнейшего перехода с аналоговой робототехники (от BEAM-роботов) к цифровой робототехнике (роботам на Arduino). На последних занятиях вы соберете BEAM-ARDUINO подобного робота ;)