极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39549|回复: 16

arduino舵机控制问题

[复制链接]
发表于 2012-1-29 12:05:13 | 显示全部楼层 |阅读模式
本人是个刚开始学习的菜鸟,我只想弄个舵机从0转到180的程序来控制机械臂,可我实在没搞懂arduino的舵机是如何控制的,谢谢大家了,具体内容如下:
1.
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
               

int pos = 0;   

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

void loop()
{
  for(pos = 0; pos < 180; pos += 1)  
  {                                 
    myservo.write(pos);              
    delay(15);                     
  }
}
这是arduino自带的例程,是不是就是舵机从0度转到180度?我在运行的时候是舵机转到一定角度后又返回,然后如此重复。这是为什么?
2.
上面的方法不行,我又了一种,用pwm控制

int motor=9;

void setup()
{
pinMode(motor,OUTPUT);

}
void loop()
{
digitalWrite(motor,HIGH);
delay(2);
digitalWrite(motor,LOW);
delay(18);
}
舵机这次根本就没反应啊,这是为什么呢?
求高手解答,谢谢了!{:soso__626321067742274858_2:}

回复

使用道具 举报

发表于 2012-1-30 12:50:30 | 显示全部楼层
你得了解一下舵机的运行原理:
它根据接收到的PWM脉冲的宽度来确定其运行的角度。

第一个例程里面,loop()循环反复不断的执行,所以它会不断地跑。
第二个例程,你直接给它一个digitalwirete()
这个可不是脉冲。。。
所以,它不干活是正常地。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-30 21:16:48 | 显示全部楼层
void loop()
{
digitalWrite(motor,HIGH);
delay(2);
digitalWrite(motor,LOW);
delay(18);
}    这个不是高电平2ms,低电平20ms吗?
如果我想用arduino让电机从0转到180度该怎么写呢?
回复 支持 反对

使用道具 举报

发表于 2012-2-9 14:16:01 | 显示全部楼层
是高电平2mS。低电平18MS。
这种方式可以使用arduino的任何一个端口来驱动舵机。
不够,占用系统的主线程,一般不推荐如此。

从0转到180度然后停顿?
或者往复不端地这么执行?
或者,循序(慢慢地)从0转到180度?
三种方式,三种代码。所以,需要你说明白。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-10 10:55:24 | 显示全部楼层
风的孩子 发表于 2012-2-9 14:16
是高电平2mS。低电平18MS。
这种方式可以使用arduino的任何一个端口来驱动舵机。
不够,占用系统的主线程 ...

从零度转到180度停顿
回复 支持 反对

使用道具 举报

发表于 2012-2-13 12:04:12 | 显示全部楼层
使用servo 库。
直接调用。
直接写。
example里面直接有例程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-13 17:46:18 | 显示全部楼层
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
               

int pos = 0;   

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

void loop()
{
                                 
    myservo.write(180);              
   
}
这样吗?不行啊,来回转
回复 支持 反对

使用道具 举报

发表于 2012-5-18 16:42:30 | 显示全部楼层
我是新手,刚买了个9克的舵机。用example里的例子从0转到180,结果舵机实际输出小于180度。大约160左右。不知道为什么?求高人指点。
回复 支持 反对

使用道具 举报

发表于 2012-5-18 17:14:03 | 显示全部楼层
jonny 发表于 2012-5-18 16:42
我是新手,刚买了个9克的舵机。用example里的例子从0转到180,结果舵机实际输出小于180度。大约160左右。不 ...

有些舵机。。。可转动角度小于180。这个得看舵机。。。
回复 支持 反对

使用道具 举报

发表于 2012-10-20 11:13:49 | 显示全部楼层
多讲点舵机控制的程序案例,我个人觉得,好多的函数没见过,能不能分析一下呢?
回复 支持 反对

使用道具 举报

发表于 2013-1-15 18:15:07 | 显示全部楼层
问一下,我是菜鸟,现在市面上所有的舵机控制板都兼容Arduino吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-15 14:17:25 | 显示全部楼层
Nightkids 发表于 2013-1-15 18:15
问一下,我是菜鸟,现在市面上所有的舵机控制板都兼容Arduino吗?

是单片机都可以,直接串口发指令
回复 支持 反对

使用道具 举报

发表于 2013-3-3 20:36:44 | 显示全部楼层
moon 发表于 2012-2-13 17:46
#include  

Servo myservo;  // create servo object to control a servo

我也在纠结此问题,您现在解决了吗
回复 支持 反对

使用道具 举报

发表于 2013-9-21 19:45:05 | 显示全部楼层
简简单单 发表于 2013-3-3 20:36
我也在纠结此问题,您现在解决了吗

创建对象,类似于“类”吧
回复 支持 反对

使用道具 举报

发表于 2014-7-26 13:00:29 | 显示全部楼层
本人是个刚开始学习的菜鸟,我只想弄个舵机从0转到180的程序来控制机械臂,可我实在没搞懂arduino的舵机是如何控制的,谁来教教我?谢谢大家了。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 20:26 , Processed in 0.052178 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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