2014-6-5 15:10:06 [显示全部楼层]
72508浏览
查看: 72508|回复: 26

[入门教程] Arduino教程 Lesson 11 -- 舵机初动

[复制链接]
该教程实验平台:Arduino入门套件
上一篇教程:Arduino教程 Lesson 10 -- 感光灯

舵机是一种电机,它使用一个反馈系统来控制电机的位置。可以很好掌握电机角度。大多数舵机是可以最大旋转180°的。也有一些能转更大角度,甚至360°。舵机比较多的用于对角度有要求的场合,比如摄像头,智能小车前置探测器,需要在某个范围内进行监测的移动平台。又或者把舵机放到玩具,让玩具动起来。还可以用多个舵机,做个小型机器人,舵机就可以作为机器人的关节部分。所以,舵机的用处很多。

Ardruino也提供了<Servo.h>库,让我们使用舵机变得更方便了。

先从简单入手,套件这个9G小舵机是180°的,我们就让它在0~180°之间来回转动。


所需材料
  • 1×  DFduino UNO R3
  • 1×  Micro Servo 9g

STEP 1: 硬件连接
这个项目的连线很简单,只需按图所示连接舵机三根线就可以了,连的时候注意线序,舵机引出三根线。一根是红色,连到+5V上。一根棕色(有些是黑的),连到GND。还有一根是黄色或者橘色,连到数字引脚9。

Arduino教程 Lesson 11 -- 舵机初动图1

STEP 2:输入代码
  1. #include <Servo.h>    // 声明调用Servo.h库
  2. Servo myservo;        // 创建一个舵机对象
  3. int pos = 0;          // 变量pos用来存储舵机位置
  4. void setup() {
  5.     myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
  6. }
  7. void loop() {
  8.    for(pos = 0; pos < 180; pos += 1){    // 舵机从0°转到180°,每次增加1°         
  9.       myservo.write(pos);           // 给舵机写入角度   
  10.       delay(15);                    // 延时15ms让舵机转到指定位置
  11.    }
  12.     for(pos = 180; pos>=1; pos-=1) {    // 舵机从180°转回到0°,每次减小1°                              
  13.        myservo.write(pos);        // 写角度到舵机     
  14.        delay(15);                 // 延时15ms让舵机转到指定位置
  15.     }
  16. }
复制代码
下载代码,下载成功后我们可以看到舵机0~180°来回转动。

STEP 3:代码回顾
代码的开始先调用<Servo.h>库
  1. #include <Servo.h>  
复制代码
这个库已经在Arduino IDE中了,可以打开Arduino-1.0.5/ libraries/ Servo/ Servo.h,这就是Servo库所在位置。

我们怎么理解库呢?和我们前面讲到的函数意义是差不多的。函数通常按一个个功能来划分的,就像一个个小的储物柜,函数名好比储物柜标签名。我们使用的时候,直接看标签就好了,方便我们使用。那库是什么呢?库则是把多个函数封装打包起来,好比大的储物柜,里面含有一个个小的储物柜。不知道这样说,你是不是能理解库和函数的关系?

同样,大储物柜也需要一个标签,这标签的学术名叫做“对象”。所以这里叫创建一个对象。就是我们接下来的这句语句:
  1. Servo myservo;        // 创建一个舵机对象
复制代码

变量pos我们就不说了,用来存放角度值。setup()函数中有一条语句:
  1. myservo.attach(9);
复制代码

这里就开始调用Servo库中的函数了,和我们以前函数调用有点区别。这里,我们需要先指明这是哪个库中的函数。所以,先指出对象名,再指出函数名。每次要用到储物柜的东西就要先指明这个标签。这样程序才知道要去哪里找东西。

库函数调用格式如下:
对象名.函数名();

不要忘了中间的“.”!myservo是我们前面设的标签(对象),然后调用的函数是:
  1. attach(pin);
复制代码
attach(pin)函数有一个传递参数——pin, 任意一个数字引脚(不建议使用数字0,1)。我们这里选择数字引脚9。

进入主函数,有两个for循环,第一段是从0开始,循环到180,每次增加1度。第二个for循环则是从180开始,每次减小1度,一直减到0。在回到上面那个循环中……
for循环中又调用了一个Servo库中的函数write(pos),我们可以不用管函数内部复杂的程序,只要先会使用就可以了。

  1. myservo.write(pos);
复制代码
和上面那个函数调用一样,先要指明是哪个库。该函数的传递参数就是角度,单位为°。

如果还想了解Servo库中还有哪些好用的函数的话,可以参看下面的网址,里面会有相关介绍的。
Servo库:https://arduino.cc/en/reference/servo


下一篇教程:Arduino教程 Lesson 12 -- 可控舵机

tutorials

20060606  高级技匠

发表于 2020-8-5 05:22:40

Jane 发表于 2014-9-1 10:25
Servo servo_1;        // 创建一个舵机对象
Servo servo_2

谢谢啦~
回复

使用道具 举报

DFHk-0ykaN8  见习技师

发表于 2020-3-9 20:26:23

在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!
回复

使用道具 举报

绝地智者  见习技师

发表于 2019-7-19 22:15:22

厉害了,新手来顶一顶帖子,加油学习~
回复

使用道具 举报

翻滚的魔方  初级技师

发表于 2014-8-31 10:06:30

如果我要控制多个舵机,应该怎么办
回复

使用道具 举报

Jane  高级技匠
 楼主|

发表于 2014-9-1 10:25:54

翻滚的魔方 发表于 2014-8-31 10:06
如果我要控制多个舵机,应该怎么办

Servo servo_1;        // 创建一个舵机对象
Servo servo_2

setup函数中初始化中定义两个引脚
servo_1.attach(9);
servo_2.attach(10);

回复

使用道具 举报

OLDSTUDENT  初级技师

发表于 2016-1-25 11:56:20

原来是这样控制啊再研究烟酒
回复

使用道具 举报

夜宴  学徒

发表于 2016-1-27 10:10:24

360°的舵机的控制原理也是这样的么?
貌似不一样吧,请问360°的舵机是如何精准控制的?
回复

使用道具 举报

peco  见习技师

发表于 2016-7-10 18:08:01

很明显转动的角度是小于180度的呀,这时怎么回事?@Jane  
回复

使用道具 举报

翻滚的魔方  初级技师

发表于 2016-7-23 21:46:44

其实按照我的理解,“对象”应该是指舵机吧。如果对象是指“库”,那么函数名的调用前面就不应该再写上“对象”的名称啊
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:04

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:11

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:18

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:24

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:29

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:35

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:42

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:48

学习了
回复

使用道具 举报

zuoyan  见习技师

发表于 2017-3-1 20:29:54

学习了
回复

使用道具 举报

Jane  高级技匠
 楼主|

发表于 2017-3-1 23:54:00


期待你的分享哈~
回复

使用道具 举报

gray6666  初级技神

发表于 2017-3-27 14:32:11

感谢分享
回复

使用道具 举报

hastwww  学徒

发表于 2018-2-3 22:47:46


感谢分享 已收藏
回复

使用道具 举报

106614649  学徒

发表于 2018-3-30 11:46:27

上电之后会动是怎么会事呢?有没办法解决?每次一上电它就会动一下。
回复

使用道具 举报

QRGsRHOk  学徒

发表于 2018-8-29 22:17:31

106614649 发表于 2018-3-30 11:46
上电之后会动是怎么会事呢?有没办法解决?每次一上电它就会动一下。

同学我也遇到相同问题了,请问你是怎么解决的啊?
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail