АААфигенный " совет по делу" человеку с 0 знаний:
Так"с, юный падаван, вы дали информацию и задали вопросы.
Но для ответов вы не сообщили самого важного - как по вашему “оно должно работать”, какие действия совершаться, в какой последовательности, что за чем, что одновременно с чем?
Вы спросили “можно ли?” - и вам правильно ответили - Можно, а как это другого вида вопрос и для него Надо понимать как выглядеть со стороны, как работает.
Вы этого, пока не сделали и помочь вам, при таких вводных невозможно.
Это как прийти к доктору и сказать что у вас болит, сильно болит - но не сказать где и как именно болит - Понимаете?
Вам дали пару хороших рекомендаций: избавиться от делеев - об этом есть куча гайдов. И поработать с каждой библиотекой по очереди, чтоб понять её возможности и придумать себе задачу.
Что до меня, я бы посоветовал, кроме алгоритма добавить в свой стенд ещё как минимум Пару кнопок и сумарно 2 светодиода, для индикации выполнения движения мотором.
Пример алгоритма:
нажали кнопку 1:
- включился светодиод1
- относительно текущего положения шаговый мотор начал совершать +400 шагов по часовой стрелке
- сервомотор удерживает положение 1
- шаговый мотор дошагал, до заданного значения
- светодиод1 потух
- готовы опять проверять нажатость кнопки 1
Если нажата кнопка номер 2:
- включился светодиод2
- проверяем в каком положении сервомотор, если положение 1 - сменить на положение 2, если положение 2 - сменить на положение 1
- задать сервомотору новое положение
- отсчитать х милисекунд, за которые сервомотор сменит положение
- если отсчитано: потушить светодиод2
- готовы опять проверять нажатость кнопки 2
Как-то так
одновременно в том смысле, что пока крутится пошаговый мотор параллельно, каждые 2 секунды серво меняет положение
Приймите за Данность, что одновременно - не может. Пусть у вас разрушится такое представление и ощущение. Ардуинка Одноядерный и однопоточный контроллер в отличии от, самое простое - ЕСП32.
Ардуино Всегда будет выполнять дейстия Поочерёдно. Переключаясь с одного действия на Другое.
Однако, При правильном алгоритме и настройке, она может делать это Так быстро, что вам будет Казаться, что это происходит Одновременно и парралельно.
Лучшим примером можно представить партию в быстрые шахматы, когда оба игрока каждых 5 секунд делоают ход. Со стороны может казаться что они Одновременно двигают и двигают фигугы и Игра Не пошаговая и нет очерётности.
Но это видимость - быстрой игры, смены очерёдности и перемещений фигур.
Вам нужно осознать и придумать похожий алгоритм \ последовательность.
К примеру:
- Шаговый мотор делает 4 шага
- Шим на управлении сервомотором увеличивается на 1цу
- Когда\если Серво доходит до 255 - значение увеличение меняется на -1, и серво начинает обратный путь
для шагового мотора может быть такое же у него может быть свой диапазон, к примеру 1800 шагов в одну сторону, потом столько же обратно
и за счёт расхождения циклов будет казаться что они двигаются одновременно независимо друг от друга
Ваще то любой одноядерный и однопоточный проц работает именно в одном потоке и не способен выполнять несколько действий одновременно. Будь он хоть трижды Пентиум. А вся многозадачность - есть иллюзия, суть просто быстрое переключение между задачами. И ардуинка при правильном подходе тоже так умеет ; )
Тогда как сделать это так быстро что не видно промежутка между действиями ато пошаговый по плану не должен останавливатся
Быстро не нужно, нужно правильно
Как-то так, на примере четырех светодиодов
Согласен, через милис - хороший, правильный и взрослый способ.
Однако посмотрите на вопрошающего. Он не поймёт вашего совета и подсказки и подумает, что вы его аккуратно послали, вместо помощи и объяснения.
Это как с фразой “Одноядерный и однопоточный контроллер” - которая вас зацепила и вы Сдуру с-агрились. Объяснения не для вас было, а вы возмутились, что я человеку Очевидные (для вас) вещи разжёвываю.
Ваш ответ верный, но совсем ничем не поможет Сейчас, Этому человеку.
Я бы предложил сделать упрощённую видимость парралельности.
Да тупо и примитивно но понятно ТС, не красиво но работающе. и что важнее понятно для восприятия ТС.
Не мне и не Вам, а Ему.
Ведь именно в этом и цель темы.
Это вот такую?
На самом деле, если вы попробуете построить такую модель, да еще с изменяемыми параметрами - вы очень быстро поймете, что ваш подход куда сложнее в реализации, чем банальный пример с миллис().
Да, поначалу человеку понадобится некоторые усилие, чтобы освоится с принципом работы миллис - зато потом любую такую задачу он будет решать играючи.
В тоже время ваш подход ДЛЯ КАЖДОГО отдельного случая будет требовать тщательной индивидуальной подгонки. Так что вы оказываете ТС медвежью услугу, предлагаете кривой и сложный путь вместо правильного решения.
Не спешите, пятница только послезавтра.
Не по рангу хамите, парниша
Предлагаю обсудить проблему сложности освоения миллис для молодого … и старшего
… поколения