墨星 16通道 PWM/舵机驱动 – I2C接口

这个教程我们将分享MicroPython使用 16通道舵机模块-PCA9685。

下载micropython的模块文件

https://github.com/SingTown/singtown-micropython-lib/tree/master/pca9685

下载pca9685.py与servo.py

烧写模块到板子

将pca9685.py与servo.py烧写到板子。并重启。

测试连接程序

这一步是为了测试硬件是否连接成功,如果不正常,说明可能焊针的接触不好,或者是硬件有问题。

moxing ESP32连接代码

from machine import Pin, I2C
i2c = I2C(sda=Pin(21), scl=Pin(22))#moxing esp32
#i2c = I2C(sda=Pin('P26'), scl=Pin('P25'))#moxing stm32
print(i2c.scan())

moxing stm32连接代码

from machine import Pin, I2C
#i2c = I2C(sda=Pin(21), scl=Pin(22))#moxing esp32
i2c = I2C(sda=Pin('P26'), scl=Pin('P25'))#moxing stm32
print(i2c.scan())

如果看到有64这个设备id,就说明连接正常。
[64, 112]

连接硬件与电源

插入舵机

将舵机插入pca9685舵机驱动板,注意,黄色排针对应信号线,红色排针对应地线,黑色排针对应电源线。

运行程序

import time
from machine import Pin, I2C
from servo import Servos

i2c = I2C(sda=Pin(21), scl=Pin(22))#moxing esp32
#i2c = I2C(sda=Pin('P26'), scl=Pin('P25'))#moxing stm32
servo = Servos(i2c, address=0x40, freq=50, min_us=500, max_us=2500, degrees=180)

while True:
    for i in range(0, 16):
        servo.position(i, 0)
    time.sleep_ms(500)
    for i in range(0, 16):
        servo.position(i, 180)
    time.sleep_ms(500)