舵机的新驱动方式

舵机的新驱动方式

    去年曾经写过舵机的驱动方式,文件见链接:https://www.shumeijiang.com/2020/05/06/舵机(伺服电机)驱动实验/;在那篇文章内我们采用的是外置的驱动文件,其原理还是利用的led的驱动方式;今天我们将切换另一种驱动方式,无需再每次使用时额外引入驱动程序,而是直接调用即可。
    调用之前,我们先认识一下今天的主角CircuitPythonCircuitPython初学者友好的Python开源版本,适用于称为微控制器的小型廉价计算机。微控制器是许多电子产品的大脑,包括用于构建业余项目和原型的各种开发板。

    CircuitPython是正在快速发展一种兼容标准Python的嵌入式系统编程语言,目前已支持树莓派(Raspberry Pi)、ARM Cortex-M0/M0+、 ARM Cortex-M4/M4F等;它具有统一的 Python核心API和收纳了越来越多的150多个与之配合使用的设备库和驱动程序;因此我们在驱动硬件设备时,可以直接通过命令调用它的内置驱动,从而不用再每次引入其他驱动程序。

    CircuitPython是由著名开源软件硬件商--Adafruit发起,得到全球开源社区的支持与维护,作为支持嵌入式计算机系统Python解释器的后起之秀,CircuitPython具备很多适合小体积、低功耗、有限资源系统的特征,尤其是在开放性和安全性方面。

    CircuitPython的大部分内建库完全兼容标准的Python3,因此这次调用我们也使用的是Python3。
#实验准备,开始之前需要安装依赖包,命令如下(直接执行即可):

pip3 install --upgrade throttle  adafruit-circuitpython-motor adafruit-circuitpython-pca9685 inputs smbus RPi.GPIO pick board
#实验代码如下:

#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import time
from board import SCL, SDA
import busio

from adafruit_pca9685 import PCA9685
from adafruit_motor import servo

#引入i2c
i2c = busio.I2C(SCL, SDA)

#实例化 此处是0x41 驱动板地址修改过导致
pca = PCA9685(i2c, address=0x41)  #地址可以修改  默认0x40
pca.frequency = 50

for i in [0,1,2]:

    servo = servo.Servo(pca.channels[i]) #i是舵机在pca9685上的编号

    #设置脉冲宽度 500到2500是正常的 这个可以自己调整 不设置默认只到135度
    servo.set_pulse_width_range(min_pulse=500, max_pulse=2500)

    #先0度
    servo.angle = 0
    time.sleep(1)

    #再执行90度
    servo.angle = 90
    time.sleep(1)

    #再执行180度
    servo.angle = 180
    time.sleep(1)

    #再恢复90度
    servo.angle = 90
    time.sleep(1)

pca.deinit()
#注意:如果报错board模块的 SCL或者SDA找不到,可以将board文件替换一下,见下面的下载文件; 文件替换地址/home/pi/.local/lib/python3.7/site-packages;地址仅做参考,楼主是这个地址。
#其中关于脉冲宽度部分不同的舵机有不同的设置,具体可参考下图:
#实验效果:
执行效果
#参考文章:https://circuitpython.readthedocs.io/projects/motor/en/latest/index.html#
jiujiang

评论已关闭。