Как позволить шаговому двигателю вращаться постоянно?

Когда я запускаю код на Arduino, шаговый двигатель делает только небольшой оборот за каждый цикл. Как я могу сделать это постоянно поворачиваясь?

 #include <Servo.h>

Servo myservo;  // создание сервообъекта для управления сервомотором
// на большинстве плат можно создать двенадцать сервообъектов

int pos = 0;    // переменная для хранения положения сервопривода
//Servo Teil
#include <Stepper.h>

const int stepsPerRevolution = 200;   измените это значение, чтобы оно соответствовало количеству шагов за оборот
// для вашего двигателя

// инициализация шаговой библиотеки на контактах с 8 по 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // установите скорость на 60 об / мин:
  myStepper.setSpeed(105);
  // инициализация последовательного порта:
  Serial.begin(9600);
  //Сервопривод
    myservo.attach(3); // присоединяет сервопривод на выводе 9 к сервообъекту
    //Сервопривод

}

void loop() {
  // шаг один оборот в одном направлении:
  Serial.println("по часовой стрелке");
  myStepper.step(stepsPerRevolution);
  //Сервопривод
  for (pos = 0; pos <= 180; pos += 1) { // от 0 градусов до 180 градусов с шагом 1 градус
    myservo.write(pos);              // говорит двигателю идти в позицию из переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет положения
  }
  for (pos = 180; pos >= 0; pos -= 1) { // идет от 180 градусов до 0 градусов
    myservo.write(pos);              // говорит двигателю идти в позицию из переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет положения
  }
  //Servo
 

 
}

, 👍2

Обсуждение

Правильно ли работает шаговый двигатель, когда вы пробуете его с помощью одного из примеров библиотек? С вашим текущим кодом шаговый двигатель должен совершать один оборот (200 шагов) за итерацию цикла () (остановка после 200 шагов, затем сервоприводы перемещаются, а затем шаговый двигатель запускается снова на следующей итерации)., @chrisl

перепишите код loop ()... избавьтесь от утверждений " для... см. пример скетча blinkWithoutDelay` для способа запуска кода с интервалом .... каждые 15 мс переместите шагомер, затем переместите сервопривод ... соответственно, увеличение/уменьшение "pos", @jsotola

Да, все так, как ты говоришь, Крисл. Thx jsotola попробует это сделать., @Jonasoos

Вы не "позволяете" шаговому движению вращаться, чтобы заставить его двигаться, вы должны *активно* шагать за ним. Когда ты не наступаешь на нее, она останавливается., @Majenko

создайте N прямоугольных волн, где N-количество фаз в вашем шаговом двигателе. Убедитесь, что N прямоугольных волн соответственно находятся вне фазы друг с другом. Подключите усиленные версии прямоугольных волн к шаговому двигателю. Двигатель будет вращаться непрерывно со скоростью, определяемой частотой прямоугольных волн., @Math Keeps Me Busy