Arduino项目:用一个电位器控制一个伺服电机

606 阅读2分钟

在这个项目中,我们将看到如何用一个电位器来驱动一个伺服电机。

使用一个模拟输入引脚,我们可以读取电位器的旋转,数值范围从0到1023。

我们将使用这些值来使伺服电机从0°旋转到180°。

首先我们创建电路,然后编写程序。

将电源引脚5VGND 与面包板上的线路+- 连接。

然后选取这些信号,将其连接到电位器的输入引脚。

将输出引脚连接到模拟I/O引脚A0

接下来,连接伺服电机。将棕色的线连接到0V,红色的连接到5V,橙色的连接到引脚9

现在让我们切换到Arduino IDE来编写程序。

我们需要先获取电位器的输入。

void setup() {
    Serial.begin(9600);
}

void loop() {
    int value = analogRead(A0);
    Serial.println(value);
}

把这个程序上传到Arduino,你应该看到在串行显示器上打印出一个从0到1023的输出。

现在我们需要将这组0-1023的数值重新映射为0-180,也就是我们要反馈给伺服电机的数值。

我们使用map() 函数来做。

value = map(value, 0, 1023, 0, 180);

现在我们要使用一个库。

在Arduino IDE的Sketch 菜单中,选择Include Library ,然后选择Servo

这将在文件的顶部添加一个#include <Servo.h> 行。

伺服库是一个内置的库,要想有更多关于这个库的信息,你可以打开菜单ToolsManage libraries...

这将打开库管理器

在框中搜索 "servo",你应该看到它出现了。

点击 "更多信息 "链接,这将在你的浏览器中打开页面www.arduino.cc/reference/e…

这是获得任何库的信息的方法,不仅仅是这个库,知道在哪里可以获得更多信息是很有用的。

该页面列出了一些使用信息,库所暴露的方法,以及一些例子。

Arduino的好处是它全部是开源的。在这种情况下,你可以在github.com/arduino-lib… 找到库的源代码所以你可以编写你自己的修改版本,或者只是了解它在引擎盖下是如何工作的。

我们将使用2个方法。 attach()write().

attach() ,我们告诉Servo要使用哪个端口。

通过write() ,我们将伺服电机移动到所需的角度,作为参数指定,从0到180。

但首先我们需要声明一个Servo对象。我们在setup() 函数之前这样做,用Servo myservo;

#include <Servo.h>
Servo myservo;

然后在setup() ,我们将伺服机连接到I/O引脚9。

#include <Servo.h>
Servo myservo;

void setup() {
    myservo.attach(9);
}

最后在loop() ,我们调用myservo.write() ,传递一个从0到180的值。

#include <Servo.h>
Servo myservo;

void setup() {
    myservo.attach(9);
}

void loop() {
    int value = analogRead(A0);
    value = map(value, 0, 1023, 0, 180);
    myservo.write(value);
}