使用 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 让伺服器到达位置
   }
}

相关文章