1、下载

2、使用
默认打开界面

新建 sketch
File -> New Sketch
选择开发板

开发板搜索 esp32s3 dev,选择第一个

代码转换
#include <stdio.h> // 程序入口函数(所有C语言程序都从main()函数开始执行) int main() { // 格式化输出函数,向控制台打印指定内容,\n表示换行符 printf("Hello World!\n"); printf("欢迎开始学习C语言!\n"); // main函数返回0,表示程序正常结束 return 0; }// Arduino程序不需要独立的main函数 // setup()函数在板子启动时执行一次 void setup() { // put your setup code here, to run once: // 初始化串口通信,设置波特率为9600 Serial.begin(9600); // 打印信息到串口监视器 Serial.println("Hello World!"); Serial.println("欢迎开始学习 Arduino 语言!"); } // loop()函数在setup()执行完后会不断循环执行 void loop() { // put your main code here, to run repeatedly: // 这里什么都不做,因为只需要输出一次信息 // 如果希望重复输出,可以在这里添加代码 }- Veriry 结果:

- Veriry 结果:
3、舵机程序解读
#include <ESP32Servo.h>
// 6个舵机连接的引脚
#define SERVO_PIN_1 17
#define SERVO_PIN_2 18
#define SERVO_PIN_3 8
#define SERVO_PIN_4 12
#define SERVO_PIN_5 39
#define SERVO_PIN_6 38
// 创建6个舵机对象
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
void setup() {
// 初始化串口,用于调试输出(可选)
Serial.begin(115200);
// 附加舵机到对应的引脚
servo1.attach(SERVO_PIN_1);
servo2.attach(SERVO_PIN_2);
servo3.attach(SERVO_PIN_3);
servo4.attach(SERVO_PIN_4);
servo5.attach(SERVO_PIN_5);
servo6.attach(SERVO_PIN_6);
// 初始位置设为中间位置(90度)
servo1.write(90);
servo2.write(90);
servo3.write(90);
servo4.write(90);
servo5.write(90);
servo6.write(90);
// 等待舵机到达初始位置
delay(1000);
}
void loop() {
// 所有舵机向上转动30度(从90度到120度)
for (int angle = 90; angle <= 120; angle++) {
servo1.write(angle);
servo2.write(angle);
servo3.write(angle);
servo4.write(angle);
servo5.write(angle);
servo6.write(angle);
delay(10); // 控制转动速度
}
// 短暂停顿
delay(500);
// 所有舵机向下转动30度(从120度到60度)
for (int angle = 120; angle >= 60; angle--) {
servo1.write(angle);
servo2.write(angle);
servo3.write(angle);
servo4.write(angle);
servo5.write(angle);
servo6.write(angle);
delay(10); // 控制转动速度
}
// 短暂停顿
delay(500);
}
源码属于arudino的代码,用于控制6个舵机。现在将这个代码结构分为四个部分:
1.头文件引入和宏定义
#include <ESP32Servo.h>
// 6个舵机连接的引脚
#define SERVO_PIN_1 17
#define SERVO_PIN_2 18
#define SERVO_PIN_3 8
#define SERVO_PIN_4 12
#define SERVO_PIN_5 39
#define SERVO_PIN_6 38
作用:
- #include <ESP32Servo.h>:引入 ESP32 舵机控制库
- ESP32Servo 的版本选择3.0.9
编译
出现错误:

/Users/finnley/workspace/Learning/ArduinoLearning/test-1/test-1.ino:1:10: fatal error: ESP32Servo.h: No such file or directory
1 | #include <ESP32Servo.h>
| ^~~~~~~~~~~~~~
compilation terminated.
exit status 1
Compilation error: ESP32Servo.h: No such file or directory
分析:
这个错误提示 No such file or directory 意思是你的 Arduino IDE 找不到 ESP32Servo.h 这个文件,也就是说你的电脑上目前还没有安装这个专用于 ESP32 的舵机库。
解决步骤:
可以按照以下步骤在 Arduino IDE 中安装它:
🛠️ 解决步骤:安装 ESP32Servo 库
- 打开库管理器:
- 如果你使用的是 Arduino IDE 2.x: 点击软件最左侧边栏的 “库管理器” 图标(看起来像一排书)。
搜索库文件: 在库管理器的搜索框中,输入
ESP32Servo并回车。找到并安装: 在搜索结果中往下翻,找到名为 ESP32Servo 的库(作者通常显示为 Kevin Harrington, John K. Bennett)。 点击它旁边的 安装 (Install) 按钮。

重新编译: 等待底部提示“安装成功”后,关闭库管理器。再次点击左上角的 验证 (Verify) 按钮(打钩
✓的图标)重新编译代码。

安装完成后,代码就可以顺利通过编译并烧录到你的 ESP32-S3 开发板中了。
#include <ESP32Servo.h>
// 实例化6个舵机对象
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
// 定义舵机连接的引脚
const int servoPin1 = 17;
const int servoPin2 = 18;
const int servoPin3 = 39;
const int servoPin4 = 38;
const int servoPin5 = 8;
const int servoPin6 = 12;
// 定义运动的角度参数
const int centerAngle = 90; // 中心初始位置
const int offsetAngle = 30; // 上下摆动的角度幅度
const int delayTime = 15; // 每次角度微调的延迟时间(毫秒),决定摆动速度
void setup() {
Serial.begin(115200);
// ESP32Servo库建议分配定时器
ESP32PWM::allocateTimer(0);
ESP32PWM::allocateTimer(1);
ESP32PWM::allocateTimer(2);
ESP32PWM::allocateTimer(3);
// 绑定舵机引脚
// 通常标准舵机的脉宽范围是 500us 到 2500us
servo1.attach(servoPin1, 500, 2500);
servo2.attach(servoPin2, 500, 2500);
servo3.attach(servoPin3, 500, 2500);
servo4.attach(servoPin4, 500, 2500);
servo5.attach(servoPin5, 500, 2500);
servo6.attach(servoPin6, 500, 2500);
// 将所有舵机初始化到90度
Serial.println("初始化所有舵机至 90 度...");
setAllServos(centerAngle);
// 等待舵机转到初始位置
delay(2000);
}
void loop() {
// 1. 从 90度 移动到 120度 (中心点 + 30度)
for (int pos = centerAngle; pos <= centerAngle + offsetAngle; pos += 1) {
setAllServos(pos);
delay(delayTime);
}
// 2. 从 120度 移动到 60度 (经过中心点,直到 中心点 - 30度)
for (int pos = centerAngle + offsetAngle; pos >= centerAngle - offsetAngle; pos -= 1) {
setAllServos(pos);
delay(delayTime);
}
// 3. 从 60度 移动回 90度 (回到中心点)
for (int pos = centerAngle - offsetAngle; pos <= centerAngle; pos += 1) {
setAllServos(pos);
delay(delayTime);
}
}
// 辅助函数:同时将所有舵机设置到指定角度
void setAllServos(int pos) {
servo1.write(pos);
servo2.write(pos);
servo3.write(pos);
servo4.write(pos);
servo5.write(pos);
servo6.write(pos);
}