скорость, время, цикл и направление шагового двигателя от Arduino - PullRequest
0 голосов
/ 25 марта 2020

Я хочу, чтобы мой шаговый двигатель работал с заданной скоростью в течение определенного времени и останавливался в течение установленного времени, а затем повторял тот же цикл. Фактически, количество раз, которое пользователь должен сделать, определит, у кого у меня последний код, который вышел из строя, но он не работает должным образом более 30 секунд, и шаговый двигатель постоянно вращается.

#include <Stepper.h>
const int stepPin = 6;  //PUL -Pulse
const int stepsPerRevolution = 1600;
const int dirPin = 7; //DIR -Direction
const int enPin = 8;  //ENA -Enable
int one = 30000;//user input
int c = 2;// user input
int rpm = 1200;//user input
unsigned long t = 0;
Stepper myStepper(stepsPerRevolution, 6, 7);

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);
  digitalWrite(enPin, LOW);
  myStepper.setSpeed(rpm);
}
void loop() {
  Cycle();
  digitalWrite(enPin, HIGH);
}
void Cycle() {

  int cycle = 1;
  for (cycle ; cycle <= c; cycle++) {

    t = millis();
    while ((millis() - t) < one) {
      myStepper.step(stepsPerRevolution);//counter clockwise rotation

    }
    delay(3000);
  }

}

1 Ответ

0 голосов
/ 25 марта 2020
int one = 30000;//user input

Если вы собираетесь использовать int в качестве временной переменной, вам нужно посмотреть, какое максимальное значение может хранить int на вашей конкретной доске. Если вы используете что-то вроде UNO или Mega, то это 32767, и это, вероятно, объяснит, почему это не работает ни с чем в течение примерно 32 секунд.

...