Всем привет. Подскажите как реализовать задержки без delay при управлении шаговым мотором. Необходимо, чтобы мотор доходил от нулевого положения сначала в одну сторону, там тормозился на заданное время, потом от нулевого в обратную сторону и тоже тормозился. В итоге мотор должен качаться из стороны в сторону, но с задержками в крайних положениях. Задержки должны иметь возможность регулирования. С таймером на millis не получается. Работает только с delay.
Установки скорости и ускорения в цикле loop т.к их необходимо регулировать их в процессе работы. Плата ESP32. Драйвер TMC2208. Таких моторов на одной плате две штуки.
Установки скорости и ускорения в цикле loop т.к их необходимо регулировать их в процессе работы. Плата ESP32. Драйвер TMC2208. Таких моторов на одной плате две штуки.
C++:
#define STEP_osc2 26 //osc2
#define DIR_osc2 15 //osc2
#define EN_osc2 27 //osc2
#include <GyverStepper.h>
GStepper<STEPPER2WIRE> X2(800, STEP_osc2, DIR_osc2, EN_osc2);
void setup() {
pinMode(EN_osc2, OUTPUT);
digitalWrite(EN_osc2, LOW);
}
void loop() {
X2.setAcceleration(500);
X2.setMaxSpeed(200);
if (!X2.tick()) {
static bool dir;
dir = !dir;
if (dir == 0) {
X2.setTarget(500);
delay(1000);
} else {
X2.setTarget(500);
delay(1000);
}
}
}