ESP32 Arduino 舵机控制

ESP32 Arduino 舵机控制

1. 前言

2. 安装程序库

  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. 舵机初始化

舵机初始化可以再分为三步:

  1. 设置 PWM 信号频率
  2. 舵机对象绑定到对应引脚,并设置脉冲宽度范围
  3. 设置舵机角度位置

程序上的实现如下:

// 设置 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() {

}
posted @   霍北北  阅读(694)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示