ESP32 Arduino 舵机控制
ESP32 Arduino 舵机控制
1. 前言
2. 安装程序库
-
打开库管理工具
工具 -> 管理库...
-
查找所需要的程序库
ESP32 的舵机控制库不止一个,而且即便是不引入库的情况下依旧可以能够实现舵机控制。在这里我们为了编写的程序更加简单,选择了
ESP32Servo
库。直接搜索
ESP32Servo
,点击安装即可。
3. 编写相关程序
3.1. 引入头文件
刚才我们新安装的依赖库:
#include <ESP32Servo.h>
3.2. 定义控制引脚
一般而言,舵机会接出三条线,分别是:VCC、GND 和信号线。VCC 和 GND 可以理解为供电电源的正负极,所以真正影响舵机控制的只有信号线,程序中所定义的引脚号也是与控制线所对应的。
#define PIN_SERVO 13
当然,引脚定义是必须的,但是使用宏定义并不是。直接定义全局变量或者在调用位置直接使用引脚号都是可以的。
3.3. 创建舵机对象
Servo 是依赖库ESP32Servo
中定义的类,我们这一行代码实际上是在创建对应的实体。
Servo servo;
3.4. 舵机初始化
舵机初始化可以再分为三步:
- 设置 PWM 信号频率
- 舵机对象绑定到对应引脚,并设置脉冲宽度范围
- 设置舵机角度位置
程序上的实现如下:
// 设置 PWM 信号频率是 50 Hz
servo.setPeriodHertz(50);
// 舵机对象绑定到 PIN_SERVO(GPIO 13),
// 设置脉冲宽度范围是 500 - 2500 微秒
servo.attach(PIN_SERVO, 500, 2500);
// 设置舵机角度为 90 度
servo.write(90);
- 50 Hz 是大多数舵机的标准频率。
- 所谓的脉冲宽度其实是 "PWM 周期 * 占空比",即高电平在单个周期所占据的时间。500-2500 微秒也是一个常见的标准(对于 180 度舵机而言)。
单纯从舵机初始化这个方面来说,设置舵机角度位置其实是不必要的,这其实属于舵机控制部分,并不是没有这行代码我们就无法使用舵机对象。
但是从实际开发的角度来说,如果没有给定舵机初始角度,后续舵机的旋转位置其实是不可预知的。
3.5. 完整程序
#include <ESP32Servo.h>
#define PIN_SERVO 13
Servo servo;
void setup() {
servo.setPeriodHertz(50);
servo.attach(PIN_SERVO, 500, 2500)
servo.write(90);
}
void loop() {
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)