该如何使多个电动机同时运动?
老师这几天给我提要求,说是要我的机器人能够两只手臂同时运动。我的右臂是用直流电机上下运动。
我的左臂是用舵机来横向位移,然后左手是用直流电机来控制一个布帘(释放和收起)。
老师的要求是,
在程序开始后,
左臂舵机位移70度,这个时候右臂(直流电机)要能够向下运动。
然后运动经过大概0.5秒的时候,左手的布帘(直流电机)能够释放。
而这个时候之前的左右臂的动作还在继续运行,直到左臂舵机位移至70度,而右臂下降直至触动限位开关,然后两个停止运行。
我控制左臂舵机的时候用的是FOR LOOP,这样子的话,我觉得可以使舵机按照每多少毫秒增加一度来运行,而显得运动比较顺滑。 没有弄明白你的右手是如何驱动的。 不行你就用时间中断来控制,那个时间比较准确 rick_hou 发表于 2013-8-17 13:13 static/image/common/back.gif
没有弄明白你的右手是如何驱动的。
右手只是简单地用
{
digitalWrite(A0,LOW);
digitalWrite(A1,HIGH);
}
来控制下来。
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。
我的问题是这两句话能不能同时运行呢?
同时运行?你的右手就是个开关控制,打开以后就干别的事情了,不需要管他,到了一定时间之后给他一个反向的控制,他就反向,这个就用定时器就行了。很准确。
另一边是舵机控制,我不太确定舵机是不是也需要用时间控制,我记得舵机是通过脉宽调整角度的。可以把整个运动过程分成若干等份,到了多少时间做什么,就在定时中断里面写就行了。delay什么的都不需要。millis()是获取开机以后的时间的,这个可用,精确到ms,我记得还有个可以精确到us的。
页:
[1]