ESP32-S3 控制 舵机
ESP32-S3 控制 SG90 舵机实验
舵机广泛应用于机器人、智能小车、机械臂等场景中,可以实现精确的角度控制。
本文介绍如何用 ESP32-S3 控制 SG90 舵机,实现角度循环变化的实验。
一、实验名称
舵机实验
二、接线说明
| SG90舵机模块 | ESP32-S3开发板 |
|---|---|
| 信号线(橙色) | 17 |
| 电源正(红色) | 5V |
| 电源负(褐色) | GND |
注意事项:
- 信号线接 ESP32-S3 的 GPIO17。
- 电源建议使用 5V 独立供电,避免开发板供电不足。
- 安装舵机库:ESP32-ESP32S2-AnalogWrite-main.zip,方法:项目 → 导入库 → 添加 .ZIP 库。
三、实验现象
程序下载成功后,舵机从 0° 开始,每次以 45° 步进,循环旋转到 180°。
四、完整代码示例
#include "public.h"
#include <Servo.h>
// 创建舵机对象
Servo myservo;
// 舵机控制引脚
#define servo_pin 17
void setup() {
Serial.begin(115200);
// 设置舵机初始角度为 0°
myservo.write(servo_pin, 0);
}
void loop() {
// 从 0° 到 180°,每次步进 45°
for (uint8_t i = 0; i <= 180; i += 45) {
myservo.write(servo_pin, i); // 设置舵机角度
delay(1000); // 等待舵机到达目标位置
}
}
五、代码讲解
- 舵机对象创建
Servo myservo;
- 创建一个舵机对象
myservo,用于控制 SG90 舵机。
- 引脚定义
#define servo_pin 17
- 信号线连接到 ESP32-S3 的 GPIO17。
- 初始化舵机位置
myservo.write(servo_pin, 0);
- 将舵机初始化为 0°。
- 循环旋转
for (uint8_t i = 0; i <= 180; i += 45) {
myservo.write(servo_pin, i);
delay(1000);
}
- 每次增加 45°,舵机旋转到目标角度。
delay(1000)保证舵机有足够时间到达目标角度。
六、实验效果
- 舵机从 0° 开始旋转。
- 每隔 1 秒,舵机角度增加 45°,依次到达 45°、90°、135° 和 180°。
- 完成一次循环后可以重复旋转,实现连续控制。
七、进阶应用
-
可调步进
可修改步进值,实现更细腻的舵机控制。 -
与传感器联动
结合超声波或温湿度传感器,实现自动舵机控制。 -
机械臂控制
多舵机联动,可实现简单机械臂动作。
八、总结
通过本实验,学习了:
- ESP32-S3 控制 SG90 舵机的方法
Servo库的基本用法- 如何通过步进控制舵机角度
本实验是机器人、智能小车和机械臂项目的基础,掌握后可进一步实现复杂动作控制。

浙公网安备 33010602011771号