极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14983|回复: 5

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

[复制链接]
发表于 2013-8-17 11:59:58 | 显示全部楼层 |阅读模式
老师这几天给我提要求,说是要我的机器人能够两只手臂同时运动。
我的右臂是用直流电机上下运动。
我的左臂是用舵机来横向位移,然后左手是用直流电机来控制一个布帘(释放和收起)。
老师的要求是,
在程序开始后,
左臂舵机位移70度,这个时候右臂(直流电机)要能够向下运动。
然后运动经过大概0.5秒的时候,左手的布帘(直流电机)能够释放。
而这个时候之前的左右臂的动作还在继续运行,直到左臂舵机位移至70度,而右臂下降直至触动限位开关,然后两个停止运行。

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

使用道具 举报

发表于 2013-8-17 13:13:16 | 显示全部楼层
没有弄明白你的右手是如何驱动的。
回复 支持 反对

使用道具 举报

发表于 2013-8-17 13:21:08 | 显示全部楼层
不行你就用时间中断来控制,那个时间比较准确
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 11:57:51 | 显示全部楼层
rick_hou 发表于 2013-8-17 13:13
没有弄明白你的右手是如何驱动的。

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

使用道具 举报

 楼主| 发表于 2013-8-18 12:01:39 | 显示全部楼层
rick_hou 发表于 2013-8-17 13:21
不行你就用时间中断来控制,那个时间比较准确

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

使用道具 举报

发表于 2013-8-18 17:01:52 | 显示全部楼层
同时运行?你的右手就是个开关控制,打开以后就干别的事情了,不需要管他,到了一定时间之后给他一个反向的控制,他就反向,这个就用定时器就行了。很准确。
另一边是舵机控制,我不太确定舵机是不是也需要用时间控制,我记得舵机是通过脉宽调整角度的。可以把整个运动过程分成若干等份,到了多少时间做什么,就在定时中断里面写就行了。delay什么的都不需要。millis()是获取开机以后的时间的,这个可用,精确到ms,我记得还有个可以精确到us的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 18:54 , Processed in 0.033330 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表