Управление шаговым двигателем через последовательный монитор

Я хотел бы управлять своим шаговым двигателем через последовательный монитор, но, к сожалению, приведенный ниже код не сработал. Последовательный монитор работает (Serial.println()), но не выполняет часть StepperOne(). Любые идеи, почему это было бы здорово. Спасибо.

#include <AccelStepper.h>

const int stepPin = 5;
const int dirPin = 4;
const int enPin = 12;

String msg;

unsigned int DEST = 800;
unsigned int SPD = 1600;
unsigned int ACCEL = 1600;
const int TEST = 3;

void setup() {

  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
  pinMode(enPin,OUTPUT);
  digitalWrite(enPin,HIGH);
  Serial.begin(9600);  // Начать сериал

}

void loop() {

if (Serial.available()>0) {
    msg = "";
    while (Serial.available()) {
      delay(10);
      char tmp = Serial.read();
      // сообщение += tmp;
     if( tmp!='\r' && tmp!='\n' ) msg+=tmp; // Тоже не работает
    }
    msg.replace(" ","");
    if (msg=="G") {
      stepperOne();
      Serial.println("Stepper turned.");
    }
    Serial.flush();
  }
}

void stepperOne() {

  AccelStepper stepper(1,stepPin,dirPin);
  digitalWrite(enPin,LOW);
  stepper.setMaxSpeed(SPD);
  stepper.setAcceleration(ACCEL);
  stepper.move(DEST);
  if (DEST > 0) {
    while ( stepper.distanceToGo() > 0 ) {
      stepper.run();
      }
  digitalWrite(enPin,HIGH);
  }
 }

, 👍1

Обсуждение

Если вы наберете «G» в последовательной консоли, она отправит «G\r\n» (с «enter» в конце). В вашем коде не учитывается возврат каретки и новая строка в конце., @Gerben

Как я могу учесть возврат каретки?, @digit

Вы можете игнорировать это. if( tmp!='\r' && tmp!='\n' ) msg+=tmp;, @Gerben

Спасибо. Я добавил его в код (см. выше), но он все равно не работает. Хотя сериал работает. Я смущен., @digit

Глупый вопрос, может ли быть причиной этого версия Arduino (более старая Uno)? Или я что-то упускаю? Спасибо, @digit

шаговый двигатель работает без серийного кода?, @jsotola

Serial.println работает, так что я думаю, что последовательный порт работает., @digit

Я нашел решение: это была Arduino, более старая версия R2, R3 работает как шарм. Я не знал, что эта версия может вызвать столько проблем. Извини., @digit

Напишите это как ответ!, @MatsK


1 ответ


Лучший ответ:

0

Я нашел решение: это была Arduino, более старая версия R2, R3 работает просто великолепно. Я не знал, что эта версия может вызвать столько проблем. Но на случай, если кто-то столкнется с той же проблемой, R3 сделал это за меня.

,