当前位置: 首页 > news >正文

ESP32 + PCA9685(16通道 PWM 扩展模块)来驱动多个 9g 舵机

PCA9685的引脚定义等详细信息参考这个链接

PCA9685的引脚定义及其驱动板详解

接线参考

PCA9685 引脚 接线说明
VCC 接 ESP32 的 3.3V
GND 接 ESP32 的 GND
SDA 接 ESP32 的 SDA(例如 GPIO21)
SCL 接 ESP32 的 SCL(例如 GPIO22)
V+ 接舵机电源 5V(推荐独立供电)

通常这些插槽的排布是这样的(以常见的 3 排舵机接口为例):

每个插槽从左到右:

[ GND | V+ | PWM ]

所以插入舵机时:

  • 棕色/黑色线(GND) → 接 GND
  • 红色线(VCC) → 接 V+(舵机电源,推荐 5V 外部电源)
  • 黄色/橙色线(信号/PWM) → 接 PWM 通道输出

通道编号说明

第 0 路(通道 0)
第 1 路(通道 1)
......
第 16 路(通道 16)

你可以在代码中直接操作1~ 16号通道控制16个舵机。

示例代码:控制左边 4 个舵机

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();#define SERVO_MIN  150
#define SERVO_MAX  600int angleToPulse(int angle) {return map(angle, 0, 180, SERVO_MIN, SERVO_MAX);
}void setup() {Serial.begin(115200);Wire.begin(21, 22);  // ESP32 默认 I2Cpwm.begin();pwm.setPWMFreq(50);  // 50Hz 是舵机控制标准delay(1000);
}void loop() {// 控制 0~3 四个舵机来回摆动for (int angle = 0; angle <= 180; angle += 5) {for (int ch = 0; ch < 4; ch++) {pwm.setPWM(ch, 0, angleToPulse(angle));}delay(30);}for (int angle = 180; angle >= 0; angle -= 5) {for (int ch = 0; ch < 4; ch++) {pwm.setPWM(ch, 0, angleToPulse(angle));}delay(30);}
}

有些同学可能会想要了解实现这个控制的底层封装 or 对寄存器的操作?etc 这里不多赘述了!

http://www.aitangshan.cn/news/682.html

相关文章:

  • k8s 新版创建完 serviceaccount 后-- 不再生成 对应的--token
  • 验证码厂商对比及选型
  • debian更换NVIDIA 官方驱动
  • 经纬恒润推动汽车软件安全新生态,打造全流程质量协同新范式
  • 2025杭电多校第七场 矩形框选、伤害冷却比 个人题解 - CUC
  • 7 月 SeaTunnel 社区狂飙:新特性、强优化、贡献者满分输出
  • 在K8S中,假设一家基于整体架构的公司处理许多产品。现在,随着公司在当今规模化行业中的发展,其整体架构开始引起问题,如何看待公司从单一服务转向微服务并部署其服务容器?
  • GAS_Aura-Post Process Highlight
  • Host startup hook
  • 育儿计划
  • 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义处理方式
  • docker run 后报错/bin/bash: /bin/bash: cannot execute binary file
  • Proteus 9.0 SP2 安装使用图文指南 | EDA电路仿真软件
  • Claude Code使用指南
  • C++ 去除字符串中的控制字符
  • 芯片安全标准驱动库,筑牢芯片功能安全基石
  • windows实现键盘记录
  • Linux 安装 Nginx 并配置为开机自启动
  • 在K8S中,有一种情况,公司希望通过保持最低成本来提高效率和技术运营速度,该公司实该如何现这一目标?
  • 基于MATLAB的单目深度估计神经网络实现指南
  • DLL Injection for Notepad
  • 在K8S中,有一家公司想要修改其部署方法,并希望构建一个可扩展性和响应性更高的平台,该公司要如何实现这一目标以满足他们的客户?
  • 记一次 .NET 某汽车控制焊接软件 卡死分析
  • 在K8S中,我们都知道从单服务到微服务的转变从开发方面解决了问题,但在部署方面却增加了问题,公司该如何解决部署方面的问题?
  • 扣子 Coze 产品体验功能
  • 为什么现在的音乐+图片的多媒体形式的感染力这么强
  • 如何排查CPU占用过高
  • 关于网络性能的命令
  • 在K8S中,有一个公司要向具有各种环境的客户提供所有必需的分发产品的方案,如何看待他们动态地实现这一关键目标?
  • 在K8S中,有一家公司希望在从裸机到公共云的不同云基础架构上运行各种工作负载。在存在不同接口的情况下,该公司将如何实现这一目标?