czh007007 发表于 2013-8-17 11:59:58

该如何使多个电动机同时运动?

老师这几天给我提要求,说是要我的机器人能够两只手臂同时运动。
我的右臂是用直流电机上下运动。
我的左臂是用舵机来横向位移,然后左手是用直流电机来控制一个布帘(释放和收起)。
老师的要求是,
在程序开始后,
左臂舵机位移70度,这个时候右臂(直流电机)要能够向下运动。
然后运动经过大概0.5秒的时候,左手的布帘(直流电机)能够释放。
而这个时候之前的左右臂的动作还在继续运行,直到左臂舵机位移至70度,而右臂下降直至触动限位开关,然后两个停止运行。

我控制左臂舵机的时候用的是FOR LOOP,这样子的话,我觉得可以使舵机按照每多少毫秒增加一度来运行,而显得运动比较顺滑。

rick_hou 发表于 2013-8-17 13:13:16

没有弄明白你的右手是如何驱动的。

rick_hou 发表于 2013-8-17 13:21:08

不行你就用时间中断来控制,那个时间比较准确

czh007007 发表于 2013-8-18 11:57:51

rick_hou 发表于 2013-8-17 13:13 static/image/common/back.gif
没有弄明白你的右手是如何驱动的。

右手只是简单地用
{
    digitalWrite(A0,LOW);
    digitalWrite(A1,HIGH);
}
来控制下来。

czh007007 发表于 2013-8-18 12:01:39

rick_hou 发表于 2013-8-17 13:21 static/image/common/back.gif
不行你就用时间中断来控制,那个时间比较准确

我昨天想了想。
因为Arduino里面有一个Millis();
所以我想设定一个time = millis();
写出诸如if(time > 500 && time < 5000){}来控制它的运动。
而我现在在考虑能不能这样子写,
if(time > 500 && time < 5000){}
if(time > 1000 && time < 6000){}
诸如这样两个if statement。
我的问题是这两句话能不能同时运行呢?

rick_hou 发表于 2013-8-18 17:01:52

同时运行?你的右手就是个开关控制,打开以后就干别的事情了,不需要管他,到了一定时间之后给他一个反向的控制,他就反向,这个就用定时器就行了。很准确。
另一边是舵机控制,我不太确定舵机是不是也需要用时间控制,我记得舵机是通过脉宽调整角度的。可以把整个运动过程分成若干等份,到了多少时间做什么,就在定时中断里面写就行了。delay什么的都不需要。millis()是获取开机以后的时间的,这个可用,精确到ms,我记得还有个可以精确到us的。
页: [1]
查看完整版本: 该如何使多个电动机同时运动?