ESP32-S3 控制 舵机

ESP32-S3 控制 SG90 舵机实验

舵机广泛应用于机器人、智能小车、机械臂等场景中,可以实现精确的角度控制。

本文介绍如何用 ESP32-S3 控制 SG90 舵机,实现角度循环变化的实验。


一、实验名称

舵机实验


二、接线说明

SG90舵机模块 ESP32-S3开发板
信号线(橙色) 17
电源正(红色) 5V
电源负(褐色) GND

注意事项

  1. 信号线接 ESP32-S3 的 GPIO17。
  2. 电源建议使用 5V 独立供电,避免开发板供电不足。
  3. 安装舵机库: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);                  // 等待舵机到达目标位置
  }
}

五、代码讲解

  1. 舵机对象创建
Servo myservo;
  • 创建一个舵机对象 myservo,用于控制 SG90 舵机。
  1. 引脚定义
#define servo_pin 17
  • 信号线连接到 ESP32-S3 的 GPIO17。
  1. 初始化舵机位置
myservo.write(servo_pin, 0);
  • 将舵机初始化为 0°。
  1. 循环旋转
for (uint8_t i = 0; i <= 180; i += 45) {
    myservo.write(servo_pin, i);
    delay(1000);
}
  • 每次增加 45°,舵机旋转到目标角度。
  • delay(1000) 保证舵机有足够时间到达目标角度。

六、实验效果

  1. 舵机从 0° 开始旋转。
  2. 每隔 1 秒,舵机角度增加 45°,依次到达 45°、90°、135° 和 180°。
  3. 完成一次循环后可以重复旋转,实现连续控制。

七、进阶应用

  1. 可调步进
    可修改步进值,实现更细腻的舵机控制。

  2. 与传感器联动
    结合超声波或温湿度传感器,实现自动舵机控制。

  3. 机械臂控制
    多舵机联动,可实现简单机械臂动作。


八、总结

通过本实验,学习了:

  • ESP32-S3 控制 SG90 舵机的方法
  • Servo 库的基本用法
  • 如何通过步进控制舵机角度

本实验是机器人、智能小车和机械臂项目的基础,掌握后可进一步实现复杂动作控制。

posted @ 2025-08-16 14:58  jeikerxiao  阅读(276)  评论(0)    收藏  举报