首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有Adafruit的TLC5947的Micropython库?

是否有Adafruit的TLC5947的Micropython库?
EN

Stack Overflow用户
提问于 2022-11-19 06:56:03
回答 1查看 17关注 0票数 0

我正在从事一个基于RPi Pico的项目,我需要使用一个TLC5947驱动程序。连接是SPI,我被告知很简单,但我试图自己实现它,但我做不到。Adafruit有一个电路pretty模块,但它似乎没有(至少直接)转换成micropython。

我是否需要继续研究自己制作它,还是已经制作了一个模块?

我的尝试是:(我认为writepwmbuffer是问题所在。)注释直接从Adafruit的arduino库的C++版本复制。

代码语言:javascript
复制
from machine import Pin
import machine

class TLC5947:
    def __init__(self, clock: int = 2, data: int = 3, latch: int = 5):
        self.numdrivers = 1
        self.data = Pin(data, Pin.OUT)
        self.clock = Pin(clock, Pin.OUT)
        self.latch = Pin(latch, Pin.OUT)
        
        self.latch.low()

        self._spi = machine.SPI(0)

        # self.OE = OE

        self.pwmbuffer = [0] * (24 * 2 * self.numdrivers)         # memset(pwmbuffer, 0, 2 * 24 * n);
        # self.spi = machine.SPI(0)

    def write(self):
        self.latch.low()                                        #        digitalWrite(_lat, LOW);
                                                                #            // 24 channels per TLC5974
        for c in range(24 * self.numdrivers - 1, -1, -1):       #            for (int16_t c = 24 * numdrivers - 1; c >= 0; c--) {
                                                                #                // 12 bits per channel, send MSB first
            for b in range(11, -1, -1):                         #                for (int8_t b = 11; b >= 0; b--) {
                self.clock.low()                                #                    digitalWrite(_clk, LOW);
                if self.pwmbuffer[c] & (1 << b):                #                    if (pwmbuffer[c] & (1 << b))
                    self.data.high()                            #                        digitalWrite(_dat, HIGH);
                else:                                           #                    else
                    self.data.low()                             #                        digitalWrite(_dat, LOW);
                                                                #
                self.clock.high()                               #                    digitalWrite(_clk, HIGH);
                                                                #                }
                                                                #            }
        self.clock.low()                                        #        digitalWrite(_clk, LOW);
        self.latch.high()                                       #        digitalWrite(_lat, HIGH);
        self.latch.low()                                        #        digitalWrite(_lat, LOW);

    def setLed(self, lednum, r,g,b):
        self.setPWM(lednum * 3, r)
        self.setPWM(lednum * 3 + 1, g)
        self.setPWM(lednum * 3 + 2, b)

    def setPWM(self, chan: int, pwm: int):
        if (pwm > 4095):
            pwm = 4095
        try:
            self.pwmbuffer[chan] = pwm
        except:
            pass

编辑:明白了。该回购指的是这样的文件夹结构:

代码语言:javascript
复制
project/
├── modules/
 │   └──tlc5947-rgb-micropython/
 │       ├──...
 │       └──micropython.mk
└── micropython/
    ├──ports/
   ... ├──stm32/
      ...

但我没有这样的东西。我的是:

代码语言:javascript
复制
project/
|_ .vscode/
|    |_ ...
|_ lib/
|_ code.py
|_ i2c_display.py
|_ tlc5947_ME.py
|_ .picowgo # Used by Pico-W-Go vscode extention to allow Pico programming in vscode
EN

回答 1

Stack Overflow用户

发布于 2022-11-19 12:15:36

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74498104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档