我一直试图制作一个简单的双轴cnc。我刚刚开始阶段,我只想查看accelStepper库。在constantSpeed和Bounce sketch示例的帮助下,我得到了一些想法,并编写了以下代码。
#include <AccelStepper.h>
AccelStepper stepperX(4, 4, 5, 6, 7);
AccelStepper stepperY(4, 8, 9, 10, 11);
unsigned int X = 800;
unsigned int Y = 600;
void setup(){
stepperX.setMaxSpeed(200);
stepperX.setSpeed(10);
stepperY.setMaxSpeed(200);
stepperY.setSpeed(10);
stepperX.move(200);
stepperY.move(200);
}
void loop(){
stepperX.runSpeed();
stepperY.runSpeed();
}
当我上传此草图时,电机不会运行。 但是当我将runSpeed()更改为run()并添加setAcceleration()时,电机随后会加速运行。我不想要加速。那么,有没有办法在没有加速的情况下做到这一点。
答案 0 :(得分:3)
来自文档(move
和moveTo
之间的唯一区别是前者做了相对移动):
void AccelStepper :: moveTo(long absolute)
设置目标位置。 run()函数将尝试移动电机 (从每个呼叫最多一步)从当前位置到目标 由最近调用此函数设置的位置。警告: moveTo()也会重新计算下一步的速度。如果你是 试图使用恒速运动,你应该调用setSpeed() 在调用moveTo()之后。
关键线(如饼图):如果您尝试使用恒定速度移动,则应在调用moveTo()后调用setSpeed()。
但是在那里(制作XY绘图仪,2轴CNC),可以节省很多悲伤,只需使用grbl。它处理所有协调的轴控制,gcode解析等。