使用Arduino控制伺服电机


伺服电机有一个轴,可以使用编码信号将其定位到特定的角度位置。幸运的是,我们不需要理解旋转轴到特定角度所需的编码信号。Arduino Servo库帮我们完成了这项工作。

电路图

如你所见,伺服电机的Vcc(通常为红色)连接到5V,GND(通常为黑色)连接到GND,信号引脚(上图中为白色,通常为白色、黄色或橙色)连接到Arduino的9号引脚。

代码演练

我们将演练Arduino自带的一个示例代码。转到**文件 → 示例 → Servo → Sweep**

或者,代码也可以在这里的GitHub上访问:https://github.com/arduinolibraries/Servo/blob/master/examples/Sweep/Sweep.ino

如你所见,我们首先包含Servo库,定义Servo对象,并将变量pos设置为0。

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;

在setup函数中,我们将伺服电机的信号引脚连接到创建的伺服对象。这里,由于我们将信号引脚连接到9号引脚,因此在参数中将指定9。

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

在loop函数中,我们将**pos**从0变化到180,步长为1,并且在每一步中,给伺服电机15毫秒的时间来达到该位置。

然后,我们重复相同的步骤,这次是从180度到0度。这在循环中不断重复。

void loop() {
   for (pos = 0; pos <= 180; pos += 1) {
      // goes from 0 degrees to 180 degrees in steps of 1 degree
      myservo.write(pos); // tell servo to go to position in variable 'pos'
      delay(15); // waits 15ms for the servo to reach the position
   }
   for (pos = 180; pos >= 0; pos -= 1) {
      // goes from 180 degrees to 0 degrees
      myservo.write(pos);       // tell servo to go to position in variable 'pos'
      delay(15);                // waits 15ms for the servo to reach the position
   }
}

更新于:2021年5月31日

浏览量:330

开启你的职业生涯

通过完成课程获得认证

开始学习
广告