tbmaomao8 发表于 2013-7-27 17:40:23

拾瑞 发表于 2013-7-26 16:31 static/image/common/back.gif
你贴个程序这么难啊?你让别人怎么帮你?

#include <Servo.h>
Servo servo;

void setup()
{
servo.attach(9);
}

void loop()
{
int pos;
   for(pos=1;pos<=360;pos++)
   {
      servo.write(pos);
       delay(15);
   }
    for(pos=360;pos>=1;pos--)
    {
      servo.write(pos);
      delay(15);
   }
}

Arduino的参考程序是把循环函数的条件改为180的.鉴于我的舵机是360舵机所以我把它改为360.
但是运行的后果是舵机正转了一点点却反转了很多圈

爱若天意 发表于 2013-7-28 14:17:30

tbmaomao8 发表于 2013-7-27 17:40 static/image/common/back.gif
#include
Servo servo;



arduino伺服控制库中控制舵机转动角度用语句
servo.write(pos);控制   其中pos就表示转动的角度
你可以测试一下,不要用for循环,直接servo.write(0);就是反转,servo.write(180);就是正转,因为不需要人为的模拟pwm波。所以这样控制就可以了
也可以测试别的角度,转速不同,如果pos=90度就停止了

tbmaomao8 发表于 2013-7-29 07:49:42

爱若天意 发表于 2013-7-28 14:17 static/image/common/back.gif
arduino伺服控制库中控制舵机转动角度用语句
servo.write(pos);控制   其中pos就表示转动的角度
你可以 ...

我曾经试过
digitalWrite(9,HIGH);
delay(1.5);
digitalWrite(9,LOW);
delay(18.5);
也不行。
其实是不是360舵机和180舵机的控制方法不同啊            

拾瑞 发表于 2013-7-29 11:08:23

1,delay以超过25MS为好;
2,如果是数字舵机,改库的频率,50HZ驱动不了数字式的舵机;
3,360度舵没用过,不知道控制命令是不是一样!

Whainte 发表于 2013-7-29 17:45:54

建议查一些资料

laji3865689 发表于 2013-8-2 12:44:28

楼主是用Arduino直接给MG995供电?外接5V电源吧,Arduino那个三端稳压管推不动这种大舵机。

另外,上电瞬间,舵机得到5V电,但是信号线的初始状态是随机的,舵机可能会猛跳到极限然后卡死。如果用了USB电源或Arduino自带的三端稳压电源,就会触发过流保护。这个时候可以看到板子上所有LED灯都灭了一下。断电后,Arduino会自动重新上电,再次发生过流保护,于是就出现了“要么不动,要么360度”的错误动作。

所以对于没有内置启动延时的普通舵机,最好有两点保护措施:
1.让Arduino先上电,启动完成后再给舵机上电。
2.使用足够功率的5V电源直接给舵机和Arduino供电。就算没有第一点,舵机的抽搐也只是一瞬间,Arduino启动完成后舵机就正常工作了,而不会反复重启。

fish6823 发表于 2014-3-23 21:09:22

laji3865689 发表于 2013-8-2 12:44 static/image/common/back.gif
楼主是用Arduino直接给MG995供电?外接5V电源吧,Arduino那个三端稳压管推不动这种大舵机。

另外,上电瞬 ...

360度的舵机只能控制速度,不能控制角度的,所以转个不停的应该是360度的舵机,180度的舵机才能控制角度,到了你设定的角度就自动停下来了。
页: 1 [2]
查看完整版本: 懂舵机控制的进~