Servo 函式库
此函式库实作了 86Duino 操控伺服马达的功能,可最多同时操控 45 个伺服马达。86Duino 的 Servo 函式库除了与 Arduino 的 Servo 函式库相容以外,我们也对 PWM 生成算法作了改进,使得 PWM 抖动(jitter)现象受到抑制,在 86Duino 上不论同时操控几颗伺服马达,PWM 抖动现象都不会恶化,且抖动幅度比 Arduino 的 Servo 函式库更小,详见此篇文章说明。
由于共用相同的计时器产生 PWM 脉波,Servo 函式库与 analogWrite()
函式不能同时使用,应特别注意。
电路
伺服马达有三条线,分别是电源线、地线、讯号线。电源线通常是红色,如果使用的伺服马达需要的是 5V 的电源,可以把伺服马达的电源线插在 86Duino 上的 5V 电源输出脚位。地线通常是黑色或棕色,可以连接到 86Duino 上有标示 GND 脚位。讯号线通常是黄色、橘色或白色,讯号线应该要连接到 86Duino 上的数位脚位。要注意一点,如果要连接的伺服马达所需电流很大或是要同时操控多颗马达,应该要使用额外的电源供电给马达,当马达使用的电不是来自 86Duino 时,要把马达使用的外部电源与 86Duino 共地。
函式
- attach()
- write()
- writeMicroseconds()
- read()
- attached()
- detach()
限制
Servo 函式库在运作时会使用 86Duino 内部的计时器(Timer),TimerOne
函式库和 Servo86
函式库也会使用该计时器,因此为了避免函式库彼此发生冲突,这三个函式库一次只能使用一个。
范例
以下是 Arduino 使用 Servo
函式库的范例,这些范例在 86Duino 上都可以正常运作:
- Knob:使用可变电阻控制马达转动的角度。
- Sweep:让马达往復转动。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.