Запуск и остановка двух шаговых двигателей

Сергей Р
Offline
Зарегистрирован: 19.02.2016
#include<AccelStepper.h>
#define motor1Pin1  8 // IN1 
#define motor1Pin2  9 // IN2 
#define motor1Pin3  10 // IN3 
#define motor1Pin4  11 // IN4 
AccelStepper stepper1(8, motor1Pin1, motor1Pin3, motor1Pin2, motor1Pin4);

#define motor2Pin1  2 // IN1 
#define motor2Pin2  3 // IN2 
#define motor2Pin3  4 // IN3 
#define motor2Pin4  5 // IN4 
AccelStepper stepper2(8, motor2Pin1, motor2Pin3, motor2Pin2, motor2Pin4);
const int led = 13;

void setup() {
  pinMode(led, OUTPUT);
  stepper1.setMaxSpeed(600);// Задаём максимальную скорость двигателя1
  stepper2.setMaxSpeed(500);// Задаём максимальную скорость двигателя2
  stepper1.setAcceleration(1000);// Задаём ускорение двигателя1
  stepper2.setAcceleration(1000);// Задаём ускорение двигателя2
  //stepper1.setSpeed(1000); // Установим скорость в шагах за секунду
  // stepper2.setSpeed(500); // Установим скорость в шагах за секунду
  stepper1.moveTo(500); // Перемещаем в абсолютно указанное положение
  stepper2.moveTo(1500);  // Перемещаем в абсолютно указанное положение
}

void loop()
{
  stepper1.run();
  // delay(500); // Не работает 
  stepper2.run();
}

 

Сергей Р
Offline
Зарегистрирован: 19.02.2016

Подскажите пожалуйста, как сделать паузу между запуском stepper1.run(); и stepper21.run();

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013
void loop()
{
  stepper1.runToPosition();
  stepper2.runToPosition();
}

Или так (смотря что имелось в виду под "пауза"):

#define STEPPER2_TIMEOUT 1000

void loop()
{
  static unsigned long t = millis();
  stepper1.run();
  if(millis() - t > STEPPER2_TIMEOUT) stepper2.run();
}

 

Сергей Р
Offline
Зарегистрирован: 19.02.2016

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

После работы stepper1 включится led на 1000мс, далее вкл. stepper2. Цикл повторяется 10раз.

void loop()
{
///1//
  stepper1.runToPosition();
   digitalWrite(led, LOW);    
    delay(1000); 
    digitalWrite(led, HIGH);  
  stepper2.runToPosition();
  delay(1000); 
 digitalWrite(led, LOW);    
    delay(1000); 
    digitalWrite(led, HIGH);  
///2//
stepper1.runToPosition();
   digitalWrite(led, LOW);    
    delay(1000); 
    digitalWrite(led, HIGH);  
  stepper2.runToPosition();
  delay(1000); 
 digitalWrite(led, LOW);    
    delay(1000); 
    digitalWrite(led, HIGH);  
}

 

vvadim
Offline
Зарегистрирован: 23.05.2012

разбейте свои задачи на части.

сначала научитесь зажигать светодиод после отработки первого шаговика.