前几天做了一个简易自行瞄准装置,尝试用RDK X5作为主控板控制多路舵机,但是失败了,后来查看官方pwm代码示例,发现RDK X5输出的PWM最低频率是48kHz,而舵机要求的PWM频率是50Hz,由于还没学会用RDK X5跟32板子通信。最后偷懒 尝试了PCA9685多路舵机模块。我的思路大概是:RDK X5通过I2C通信的方式控制模块输出PWM控制舵机,PCA9685多路舵机模块具体的接线和使用方法可以搜索使用教程或者查看PCA9685芯片手册。
搜索发现,这个模块好像还有官方的驱动库,我找到是python版本的:https://github.com/adafruit/Adafruit_Python_PCA9685,这个库比较老,已经被官方弃用并存档了,最近一次更新也是几年前,但是还能用 。(另外这里有个坑:官方出的新库的名字是 adafruit-circuitpython-pca9685,这个新库需要用到board模块和busio模块来调用I2C通信端口,但是就我目前的尝试结果来看这个新库不适配RDK X5,仅仅导入board模块的时候就会报错误,会让你更新版本或者查看是否硬件平台是否支持)
我是采用了pip的方式安装:pip install adafruit-pca9685,然后在github上手动下载zip压缩包查看源码,参考源码例程使用这个库。
调用这个库可以直接控制输出PWM,在此基础上我拓展写了一个控制舵机角度的模块,思路是:把舵机转动的角度转换成占空比(0.5%~2.5%),然后再将占空比转化为寄存器的值,最后取整,调用Adafruit_Python_PCA9685库的方法把值写入寄存器。
Adafruit_Python_PCA9685-master.zip (12.2 KB)
DuoJi.zip (1.0 KB)。
1 个赞
非常感谢你的热心分享!从结合PCA9685多路舵机模块能看出你花了很多心思实践和总结,这些经验对刚接触RDK X5开发的伙伴来说太实用了 —— 毕竟踩过的坑、趟过的路,都是最宝贵的 “通关秘籍” 呀~
社区能有这样愿意敞开交流的开发者,真的特别棒!期待未来能看到你更多关于结合RDK X5更多应用的分享,也欢迎大家提问交流,一起让RDK X5的玩法越来越丰富~ ![]()
非常棒!感谢分享!
我最近正在尝试用pca9685控制二维云台,树莓派上用的是adafruit-pca9685,但不能直接用于rdk x5。试试您的代码。