Управление шаговым двигателем через последовательный монитор
Я хотел бы управлять своим шаговым двигателем через последовательный монитор, но, к сожалению, приведенный ниже код не сработал. Последовательный монитор работает (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);
}
}
@digit, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 0
Я нашел решение: это была Arduino, более старая версия R2, R3 работает просто великолепно. Я не знал, что эта версия может вызвать столько проблем. Но на случай, если кто-то столкнется с той же проблемой, R3 сделал это за меня.
,
@digit
Смотрите также:
- Как я могу использовать степпер для определенной степени?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Шаговый двигатель не поворачивается/не поворачивается против часовой стрелки
- Шаговый двигатель с концевыми выключателями
- Запустить два степпера одновременно
- Попытка понять постоянную скорость AccelStepper
- Шаговый двигатель - концевой выключатель положения
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
Если вы наберете «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