我准备了短测试代码来通过串行端口控制步进电机(使用AccelStepper库)。代码使用三个命令M - 将电机移动到定义的位置,H - 放弃操作,P - 检查当前的电机步进位置。每个表示必须以“#”结束。所以当我写M500#意味着电机将开始移动,直到达到500位。我的问题是如何中止这个操作?串行端口被阻止,直到RunToPosiotion功能完成。
#include
#include
AccelStepper stepper = AccelStepper(AccelStepper::HALF4WIRE, 4, 5, 6, 7);
String MyString;
String Command;
int Value;
void setup() {
Serial.begin(57600);
stepper.setMaxSpeed(400);
stepper.setAcceleration(600);
stepper.setCurrentPosition(100);
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar == '#') {
SerialCommand(MyString);
MyString = "";
}
else {
MyString += inChar;
}
}
}