极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18210|回复: 8

有没有能控制舵机速度且不用DELAY的函数呢

[复制链接]
发表于 2013-8-20 01:12:28 | 显示全部楼层 |阅读模式
我想在舵机平滑地转到一个角度的同时也能运行其它电动机。
在网上找到控制舵机速度的程序里面都用了DELAY,但是用了DELAY的话不就不能同时运行其他程序了么?
真心求教,老师这个星期五就要检查了。关键她只要效果,不看过程。而且她还不懂程序{:soso_e109:}
回复

使用道具 举报

发表于 2013-8-20 09:44:24 | 显示全部楼层
用定时器就行
回复 支持 反对

使用道具 举报

发表于 2013-8-20 09:54:54 | 显示全部楼层
定时器中断都行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-20 18:16:08 | 显示全部楼层
chenshien 发表于 2013-8-20 09:44
用定时器就行

我能厚着脸皮求一下具体例子么?
我给舵机写的很简单,就是使用库,然后就像下面这样子:
for(i = 0;i < 100 ; i++)
{
   s1.write(i);
   delay(50);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-20 18:16:50 | 显示全部楼层
天下无双 发表于 2013-8-20 09:54
定时器中断都行

这个定时中断也能用在FOR LOOP里面吗?
回复 支持 反对

使用道具 举报

发表于 2013-8-20 18:50:23 | 显示全部楼层
你把其他程序当成delay放在那儿就行了呗
回复 支持 反对

使用道具 举报

发表于 2014-2-7 20:02:34 | 显示全部楼层
利用millis()設定想要讓旋轉的時間,大概如下:

float dt, lastTime, runTime;
void setup()
{

}
void loop()
{
float time = millis()
dt=(time-lastTime) / 1000;
if(runTime<0.05)
{
s1.write(i);
runTime=runTime+dt;
}
else
{
runTime=0;
}
lastTime=dt;
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-7 21:53:44 | 显示全部楼层
隨風大俠 发表于 2014-2-7 20:02
利用millis()設定想要讓旋轉的時間,大概如下:

float dt, lastTime, runTime;

好吧,谢谢了~现在已经不需要这个了,不过还是很感谢~
回复 支持 反对

使用道具 举报

发表于 2014-2-8 13:11:27 | 显示全部楼层
为什么不用输出位置反馈呢,题目是角度控制,不是时间控制。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 12:39 , Processed in 0.037396 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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