Arduino学习之二——舵机控制

来源:互联网 发布:火灾数据 编辑:程序博客网 时间:2024/05/21 06:26
舵机是一种电机,它使用一个反馈系统来控制电机的位置。大多数舵机是可以最大旋转180°的。也有一些能转更大角度,甚至360°。舵机比较多的用于对角度有要求的场合,比如摄像头,智能小车前置探测器,需要在某个范围内进行监测的移动平台。又或者把舵机放到玩具,让玩具动起来。还可以用多个舵机,做个小型机器人,舵机就可以作为机器人的关节部分。

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

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


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

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

 

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. void loop() { 
  7.    for(pos = 0; pos < 180; pos += 1){    // 舵机从0°转到180°,每次增加1°          
  8.       myservo.write(pos);           // 给舵机写入角度   
  9.       delay(15);                    // 延时15ms让舵机转到指定位置
  10.    }
  11.     for(pos = 180; pos>=1; pos-=1) {    // 舵机从180°转回到0°,每次减小1°                               
  12.        myservo.write(pos);        // 写角度到舵机     
  13.        delay(15);                 // 延时15ms让舵机转到指定位置
  14.     } 
  15. }
复制代码

下载代码,下载成功后我们可以看到舵机0~180°来回转动。

我的文件位置:D:\APP_Install\Arduino-1.8.5\Project_Samples_By_ciky\01-servo_control



STEP 3:代码回顾
代码的开始先调用<Servo.h>库
  1. #include <Servo.h>  
复制代码
这个库已经在Arduino IDE中了,可以打开Arduino-1.8.5/ libraries/ Servo/ Servo.h,这就是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库:http://arduino.cc/en/reference/servo