Quadruped и millis
- Войдите на сайт для отправки комментариев
Взяли чужой код и хотите чтоб за вас все написали?
где millis c которыми не получается?
с програмированием вам помогут, но придумывать алгоритм работы наврядли.
лично с квадроподом не знаком и искать что это желание не возникает. по программе вижу, что управляете кучей серв. похоже на паука какого-то, наверное. нарисуйте себе графический алгоритм работы может все и проясниться. мне помогает.
Видите ли, doktor2893, такая конструкция
-
for(i = 0 ; i<=25; i++){ servo2.write(90 - i); servo3.write(90 + i); }
по своему результату ничем не отличается от
servo2.write(90 - 25); servo3.write(90 + 25);
ч
п
c
п
вы понимаете в чем суть вопроса??я уже и нарисовал и продумал и сделал полностью алгоритм движения, а сейчас мне нужен он же но за место delay millis, хотя бы на примере 2 серв и все дальше я сам
"хочу реализовать функцию движения через millis, но ни как не получается придумать способ,помогите пожалуйста." призывание к помощи или тебе вопрос нужен?грамотный
"хочу реализовать функцию движения через millis, но ни как не получается придумать способ,помогите пожалуйста." призывание к помощи или тебе вопрос нужен?грамотный
всё хуйня - давай сначала.
ты выразил желание, а вопроса не задал - собери мозги в кучку и попробуй заново.
вы понимаете в чем суть вопроса??я уже и нарисовал и продумал и сделал полностью алгоритм движения, а сейчас мне нужен он же но за место delay millis, хотя бы на примере 2 серв и все дальше я сам
Создайте две глобальные целочисленные переменные состояния. В первой храните тип действия, во второй - фазу движения внутри действия (вторая - аналог переменной цикла в Ваших внутренних циклах).
Внутри loop() проверяйте, не наступило ли время для выполнения очередной фазы движения (аналогично blink without delay), и если наступило - выбирайте нужное действие в соответствии со значениями указанных переменных.
Очевидно, действие должно быть элементарным - не включающем в себя какие-либо циклы или задержки.
ладно:D
я много чего пробовал,можно просто кусрчек кода?
Из Ваших "элементарных движений" выкиньте цикл и вставьте параметр - номер фазы движения (у Вас - i). Ну и delay(), естественно, тоже выкинуть.
смотри вот это класс титановый велосипед для delay без delay().
дёргай сервами в заданные классом промежутки времени... если нужно последовательно всё выполнять, то флаги отработки каждого действия устанавливай, что бы по условию срабатывания одного, начиналось другое.
я все равно не особо представляю как сделать,можно кусочек кода пожалуйста?
void forward(unsigned int i) { // поднять вверх переднее правое колено и левое нижнее колено if(i<=25){ servo2.write(90 - i); servo3.write(90 + i); } else // передвинуть переднее правое и левое заднее бедро вперед, переднее левое и заднее правое бедро назад if(i >= 26 && i <=70){ i -= 26; servo11.write(90 + i + 7);//плб servo22.write(50 + i );//ппб servo33.write(93 - i - 4);//злб servo44.write(138 - i );//зпб } else // опустить преднее правое и заднее левое колено if(i >= 71 && i<=96){ i -= 71; servo2.write(65 + i); servo3.write(115 - i); } // поднять переднее левое колено и заднее правое ... }
С
А millis() нужно использовать в том месте, откуда вызывается forvard(). В исходном коде этого фрагмента нет, поэтому и я не стал приводить. Идея изложена в посте №10.
его нет потому что у меня не прлучилось вставить его туда,спасибо
doktor2893, Вы уверены, что хорошо разобрались с blink without delay?
сейчас уже почти написал то что нужно ,с millis blink там только половина из того что мне нужно
Вторая половина - конечные автоматы.
На cyberform ТС послали пример "blink" без delay читать (и правильно сделали, кстати), а здесь вона как - щас всё и напишут :)
ни каких нет тут конечных автоматов,сначала поднимаются два серво и остаются в удерживающем ссотоянии,потом 4 движется,потом два которые поднялись опускаются..
ни каких нет тут конечных автоматов,сначала поднимаются два серво и остаются в удерживающем ссотоянии,потом 4 движется,потом два которые поднялись опускаются..
1. Слушайте, что Вам говорят знающие люди.
2. Если сильно хочется возразить человеку, который знает сильно больше Вашего, сначала хотя бы википедию откройте. Знали бы что такое конечный автомат, так бы в лужу не пукнули.
а
ЕвгенийП, вот и выросло племя, которое все знает и которому все должны((((
ЕвгенийП, вот и выросло племя, которое все знает и которому все должны(((
Здесь-то он новенький, а на cyberforum'е давно торчит. Можете глянуть на его репутацию (там под ником) - примечательны даже не цифры, а то что никто, ни разу не "сказал слово в защиту детёныша".
х
ЕвгенийП, вот и выросло племя, которое все знает и которому все должны(((
Здесь-то он новенький, а на cyberforum'е давно торчит. Можете глянуть на его репутацию (там под ником) - примечательны даже не цифры, а то что никто, ни разу не "сказал слово в защиту детёныша".
А смысл глядеть, если уже во втором своем сообщении начинает хамить и предъявлять претензии. Это даже не его вина, его так научили в новой системе образования. Судя по цифрам ника, только что окончил институт и почуял себя ВЕЛИКИМ. Сейчас выйдет на дорогу и будет думать, а что это меня все пинают?
о
единственный ччеловек,которому хочу выразить респект это andriano, спасибо!
doktor2893, чучело:
1. Я уже лет 20 никому ничего не доказываю, ибо тебя или слышат или нет. Ты слышишь только себя.
2. На любое утверждение можно ответить по разному, ты выбрал из самых агрессивных вариантов.
3. Человек гораздо старше тебя обращался на "вы", ты ему начал тыкать.
4. Повторив несколько раз "самоутверждаться-самореализовываться", посмотрись в зеркало.
5. Чтобы кого то освободить, надо сперва суметь поставить перед собой. Длинного языка для этого мало.
Вывод: Молодое, неудовлетворенное, невоспитанное существо с амбициями и непониманием, почему мир ко мне неласков. Будь попроще и не требуй того, что сам не готов дать другим. Может жизнь и наладиться.
Понимаете, дорогой doctor2893, что тут не форум помощи новичкам? Тут нет даже правил, по которым следует хоть пытаться помочь.
Поэтому помощь - дело добровольное. Мы поможем тому, кто интересен, и/или умен или, хотя бы, вежлив.
1. Про интересен - Максим, конечно покривил душой, говоря, что не знает про квдропод. Такой механизм тысячи раз обсосан и как проект - тут никому не интересен, нового там ничего нет, поэтому невежество в обмен на свежий источник идей - не катит. Скучно.
2. Про "умен". На вопрос "как заменить delay() на millis()" тут не станут отвечать ибо задолбало. Это тысячи раз описано на форуме и вне форума, прямо на сайте написано о "блинк без делей". И Ваша реплика о том, что Вам там чего-то не хватает, или что-то непонятно, говорит о редком сплаве упрямства и скудоумия.
3. "Вежлив". Тут даже комментировать не стоит, но все же ответ одному из участников, что (перефразирую) он не может "знать лучше, что нужно для Вашего проекта". Это даже не хамство, а просто юмор. Вы же сами, фактом обращения, приняли то, что мы лучше знаем..., ну да ладно. В ответ на то, что замена задержки на источник информации - это замена логики алгоритма на автоматную, Вы пишете "причем здесь конечные автоматы?", что окончательно выявляет в Вас - невежду и невежу одновременно.
Конечным автоматом мы назовем систему, обрабатывающую заранее известный набор сигналов. При том, что состояние системы и входной сигнал однозначно определяют следующее состояние и, возможно, совершаемое полезное действие. Количество возможных состояний системы - конечно и известно заранее.
Это самое "философское", лишенное математической терминологии, и поэтому наиболее простое определение КА. А millis(), как бы это не показалось странным, источник сигналов, обрабатывая которые автомат должен совершать те или иные манипуляции конечностями квадропода. Поэтому переделка линейной программы с delay() в автоматную требует наличия хотя бы 200 грамм серого вещества. Причем несколько добрых людей уже написали Вам - как именно это сделать.
----------------------------
Вывод - тут нет бана, жестких правил и почти не модерации, но все же я посмею рекомендовать Вам поискать иную площадку.
единственный ччеловек,которому хочу выразить респект это andriano, спасибо!
теперь andriano распечатает этот пост и повесит в туалете
Здравствуйте проблема такая,пишу код для квадропода, хочу реализовать функцию движения через millis, но ни как не получается придумать способ,помогите пожалуйста.
Пример движения вперед