八色木

如何使用Arduino舵机库servo.h

我们都知道Arduino控制板支持PWM的引脚有限,但如果在Arduino上需要控制超出PWM引脚数量的舵机怎么办呢?答案是使用servo.h库文件,它是Arduino控制舵机的标准库之一。

舵机的内部结构

Servo.h

查看Arduino库文件列表,可通过Arduino IDE的“Help”菜单下的“Reference”查看。

Arduino Libraries

我们可以看到在Arduino标准库中的servo库,单击连接后进入,可查看servo.h文件更详细的内容。

Servo library

在上图左边是对servo库文件的基本介绍,右边是主要的函数和示例。

Servo库文件使用

我们知道舵机必须定期接收高电平脉冲控制信号才能维持转动。如果信号停止,舵机也停止。详见:舵机角度的控制。如果使用servo库来设置控制信号,就可以通过引入一些代码,实现如延迟、检查传感器、等待等功能。同时,由于servo库一直在后台运行,而舵机一直在旋转,它会经常中断其他正在执行的代码来启动那些高脉冲,带是这个切换的动作快到我们感知不到。

使用servo库来发送舵机控制信号一般需要四个步骤:

1、 首先要告诉Arduino编程器,希望在代码开始时,即setup函数之前,声明使用Servo库函数。

#include <Servo.h>          // Include servo library

2、 在#include和setup函数之间为要发送的信号命名servo库的实例。如下servoLeft就是指定的实例名称。

Servo servoLeft;            // Declare left servo

3、 在setup函数中,使用给出的舵机信号的名称后跟一个点,然后通过附加函数attach()调用信号引脚。这个例子告诉系统舵机信号servoLeft应该通过数字引脚13来传输。

servoLeft.attach(13);      // Attach left signal to pin 13

4、writeMicroseconds()函数,用于设置脉冲持续时间。

servoLeft.writeMicroseconds(1500); // 1.5 ms stay-still signal

5、write()函数, 作用是将一个角度值写入舵机,设置轴转动的角度(该值是指角度),0为在一个方向全速转动,180为在另一个方向上全速转动,接近90为复位。

servoLeft.write(90);  // set servo to mid-point 

6、attached()函数,用于检测servo变量是否正确连接至Arduino对应引脚上。返回值为 true 和 false 。

servoLeft.attached()

7、detach()函数, 作用是从对应引脚上分离舵机变量。如果要将所有舵机变量分离,则使用analogWrite()函数将引脚9和引脚10用于PWM输出。

servoLeft.detach() 

8、read()函数, 用于读取舵机的当前角度值(传递给上次调用write()的值)。

servoLeft.read()  

以上是servo.h库文件的基本函数讲解,如有不当之处请谅解。

Exit mobile version