求助:Arduino同时执行2个步进电机命令
本帖最后由 eufo 于 2015-6-3 22:28 编辑突然想到一个问题:
假如stepper1(int a)为控制步进电机1运行a秒然后停止的函数,stepper2(int b)为控制步进电机2运行b秒然后停止的的函数。
void loop()
{
stepper1(100);
stepper2(200);
}
因为单片机是逐行执行命令的,所以步进1先运行100秒后停止,然后步进2再运行200秒后停止。
void loop()
{
stepper1(10); 步进1运行10秒后停止
stepper2(200);步进2运行200秒后停止
stepper1(90);步进1在运行90秒后停止
}
如果我想步进1运行10秒后步进2立即启动运行200秒,但此时的步进1不停止下来怎么办? 你说的不停下来是什么意思?没有立刻停止,但是之后会停止,还是说一直都不停止? 参考这个网页http://www.airspayce.com/mikem/arduino/AccelStepper/,accelstepper库可以设置加速度,并可驱动多个步进电机 本帖最后由 eufo 于 2015-6-4 20:20 编辑
rick_hou 发表于 2015-6-4 00:13 static/image/common/back.gif
你说的不停下来是什么意思?没有立刻停止,但是之后会停止,还是说一直都不停止?
意思是步进1运行了10s时,步进2就开始运动,但此时步进1还是在转,如图绿色标识。我的理解是单片机只能执行完步进1运行的命令才能执行步进2运行的命令,所以执行步进1命令的中途(10S时)无法执行步进2的命令,下图的情形无法实现。 eufo 发表于 2015-6-4 11:44 static/image/common/back.gif
意思是步进1运行了10s时,步进2就开始运动,但此时步进1还是在转,如图绿色标识。我的理解是单片机只能 ...
是的,如果按照你的要求要想实现确实有点难度。没有研究过stepper的实现方法,你说的这种方式属于多轴联动。 我上面已经回复了,楼主视若无睹,上面那个库可以同时驱动多个电机,自己编程的话协调好脉冲信号的发射也不是什么难事 nick_zm 发表于 2015-6-4 22:02 static/image/common/back.gif
我上面已经回复了,楼主视若无睹,上面那个库可以同时驱动多个电机,自己编程的话协调好脉冲信号的发射也不 ...
谢谢了。但我看不懂同类相关的代码,看来要学一下C++了 楼主停止函数咋写 分享一下 谢谢了 本帖最后由 michel616 于 2018-2-26 17:50 编辑
写一个双进程的函数就可以了,需要用到metro函数()
这里有个差不多的用双线程的步进电机帖子。。应该能帮到你
http://bit.ly/steppermotorcontrolbyphone 本帖最后由 Damn_intuition 于 2018-3-6 12:49 编辑
多设备协同工作可以采用一个比较简单的时间分片思想:
for (i=0;i<210;i++){
if (i<10)
stepper1(1);
else
{
stepper1(1);
stepper2(1);
}
}
stepper1(1);
页:
[1]