Может ли серво и пошаговый мотор работать одновременно

АААфигенный " совет по делу" человеку с 0 знаний:

1 лайк

Так"с, юный падаван, вы дали информацию и задали вопросы.
Но для ответов вы не сообщили самого важного - как по вашему “оно должно работать”, какие действия совершаться, в какой последовательности, что за чем, что одновременно с чем?
Вы спросили “можно ли?” - и вам правильно ответили - Можно, а как это другого вида вопрос и для него Надо понимать как выглядеть со стороны, как работает.
Вы этого, пока не сделали и помочь вам, при таких вводных невозможно.
Это как прийти к доктору и сказать что у вас болит, сильно болит - но не сказать где и как именно болит - Понимаете?

Вам дали пару хороших рекомендаций: избавиться от делеев - об этом есть куча гайдов. И поработать с каждой библиотекой по очереди, чтоб понять её возможности и придумать себе задачу.
Что до меня, я бы посоветовал, кроме алгоритма добавить в свой стенд ещё как минимум Пару кнопок и сумарно 2 светодиода, для индикации выполнения движения мотором.

Пример алгоритма:
нажали кнопку 1:

  • включился светодиод1
  • относительно текущего положения шаговый мотор начал совершать +400 шагов по часовой стрелке
  • сервомотор удерживает положение 1
  • шаговый мотор дошагал, до заданного значения
  • светодиод1 потух
  • готовы опять проверять нажатость кнопки 1

Если нажата кнопка номер 2:

  • включился светодиод2
  • проверяем в каком положении сервомотор, если положение 1 - сменить на положение 2, если положение 2 - сменить на положение 1
  • задать сервомотору новое положение
  • отсчитать х милисекунд, за которые сервомотор сменит положение
  • если отсчитано: потушить светодиод2
  • готовы опять проверять нажатость кнопки 2

Как-то так

1 лайк

одновременно в том смысле, что пока крутится пошаговый мотор параллельно, каждые 2 секунды серво меняет положение

Приймите за Данность, что одновременно - не может. Пусть у вас разрушится такое представление и ощущение. Ардуинка Одноядерный и однопоточный контроллер в отличии от, самое простое - ЕСП32.
Ардуино Всегда будет выполнять дейстия Поочерёдно. Переключаясь с одного действия на Другое.
Однако, При правильном алгоритме и настройке, она может делать это Так быстро, что вам будет Казаться, что это происходит Одновременно и парралельно.

Лучшим примером можно представить партию в быстрые шахматы, когда оба игрока каждых 5 секунд делоают ход. Со стороны может казаться что они Одновременно двигают и двигают фигугы и Игра Не пошаговая и нет очерётности.
Но это видимость - быстрой игры, смены очерёдности и перемещений фигур.

Вам нужно осознать и придумать похожий алгоритм \ последовательность.

К примеру:

  • Шаговый мотор делает 4 шага
  • Шим на управлении сервомотором увеличивается на 1цу
  • Когда\если Серво доходит до 255 - значение увеличение меняется на -1, и серво начинает обратный путь

для шагового мотора может быть такое же у него может быть свой диапазон, к примеру 1800 шагов в одну сторону, потом столько же обратно

и за счёт расхождения циклов будет казаться что они двигаются одновременно независимо друг от друга

Ваще то любой одноядерный и однопоточный проц работает именно в одном потоке и не способен выполнять несколько действий одновременно. Будь он хоть трижды Пентиум. А вся многозадачность - есть иллюзия, суть просто быстрое переключение между задачами. И ардуинка при правильном подходе тоже так умеет ; )

Тогда как сделать это так быстро что не видно промежутка между действиями ато пошаговый по плану не должен останавливатся

Быстро не нужно, нужно правильно

Как-то так, на примере четырех светодиодов

Согласен, через милис - хороший, правильный и взрослый способ.
Однако посмотрите на вопрошающего. Он не поймёт вашего совета и подсказки и подумает, что вы его аккуратно послали, вместо помощи и объяснения.
Это как с фразой “Одноядерный и однопоточный контроллер” - которая вас зацепила и вы Сдуру с-агрились. Объяснения не для вас было, а вы возмутились, что я человеку Очевидные (для вас) вещи разжёвываю.

Ваш ответ верный, но совсем ничем не поможет Сейчас, Этому человеку.

Я бы предложил сделать упрощённую видимость парралельности.
Да тупо и примитивно но понятно ТС, не красиво но работающе. и что важнее понятно для восприятия ТС.
Не мне и не Вам, а Ему.
Ведь именно в этом и цель темы.

Это вот такую?

На самом деле, если вы попробуете построить такую модель, да еще с изменяемыми параметрами - вы очень быстро поймете, что ваш подход куда сложнее в реализации, чем банальный пример с миллис().
Да, поначалу человеку понадобится некоторые усилие, чтобы освоится с принципом работы миллис - зато потом любую такую задачу он будет решать играючи.
В тоже время ваш подход ДЛЯ КАЖДОГО отдельного случая будет требовать тщательной индивидуальной подгонки. Так что вы оказываете ТС медвежью услугу, предлагаете кривой и сложный путь вместо правильного решения.

1 лайк

Не спешите, пятница только послезавтра.

Не по рангу хамите, парниша

Предлагаю обсудить проблему сложности освоения миллис для молодого … и старшего :slight_smile: … поколения