使用 Arduino 控制伺服电机
arduinoarduino boardsarduino idearduino programming language
伺服电机有一个轴,可以使用编码信号将其定位到特定的角度位置。幸运的是,我们不必了解将轴旋转到特定角度所需的编码信号。 Arduino Servo 库为我们完成了这项工作。
电路图
如您所见,Servo 的 Vcc(通常为红色)连接到 5V,GND(通常为黑色)连接到 GND,信号引脚(上图中为白色,通常为白色或黄色或橙色)连接到 Arduino 的引脚 9。
代码演练
我们将演练 Arduino 附带的示例代码。转到文件 → 示例 → Servo →扫描
或者,可以在 GitHub 上访问代码 − https://github.com/arduinolibraries/Servo/blob/master/examples/Sweep/Sweep.ino
如您所见,我们首先包含 Servo 库并定义 Servo 对象,并将变量 pos 设置为 0。
#include <Servo.h> Servo myservo; // 创建伺服对象来控制伺服 // 大多数电路板上可以创建十二个伺服对象 int pos = 0;
在设置中,我们将伺服的信号引脚连接到创建的伺服对象。在这里,由于我们已将信号引脚连接到引脚 9,因此我们将在参数中指定 9。
void setup() { myservo.attach(9); // 将引脚 9 上的伺服器连接到伺服对象 }
在循环中,我们将 pos 从 0 变为 180,步长为 1,并且在每个步骤中,给伺服电机 15 毫秒以达到该位置。
然后,我们重复相同的练习,这次从 180 度变为 0 度。这在循环中继续。
void loop() { for (pos = 0; pos <= 180; pos += 1) { // 以 1 度为步长从 0 度变为 180 度 myservo.write(pos); // 告诉伺服器转到变量 'pos' 中的位置 delay(15); // 等待 15 毫秒让伺服器到达该位置 } for (pos = 180; pos >= 0; pos -= 1) { // 从 180 度变为 0 度 myservo.write(pos); // 告诉伺服器转到变量 'pos' 中的位置 delay(15); // 等待 15ms 让伺服器到达位置 } }