Python - RGB LED 颜色褪色

Python - RGB LED Color Fading

我四处寻找,试图在 Python 中找到一种在一种颜色与另一种颜色之间淡化的方法。我发现的大多数示例通常特定于某个设备或使用另一种翻译效果不佳的语言。

我目前有一段修改过的代码,用于创建呼吸效果,例如从 0 渐变到 255 效果很好。我现在设置的是 from 颜色,比如绿色;闪烁;然后设置 to 颜色:

def colorFade(strip, colorFrom, colorTo, wait_ms=20, steps=10):
    steps = 200

    step_R = int(colorTo[0]) / steps
    step_G = int(colorTo[1]) / steps
    step_B = int(colorTo[2]) / steps
    r = int(colorFrom[0])
    g = int(colorFrom[1])
    b = int(colorFrom[2])

    for x in range(steps):
        c = Color(int(r), int(g), int(b))
        for i in range(strip.numPixels()):
            strip.setPixelColor(i, c)
        strip.show()
        time.sleep(wait_ms / 1000.0)
        r += step_R
        g += step_G
        b += step_B

调用代码:

colorFade(strip, [200, 0, 0], [0, 200, 0])

听起来你想从colorFrom开始,然后循序渐进 沿着直线直到到达 colorTo.

这段代码的作用是从 colorFrom 开始,然后增加当前值 颜色就像从 blackcolorTo.

没有完整的代码很难确定,但看起来你应该 替换为:

step_R = int(colorTo[0]) / steps
step_G = int(colorTo[1]) / steps
step_B = int(colorTo[2]) / steps

有了这个:

step_R = (colorTo[0] - colorFrom[0]) / steps
step_G = (colorTo[1] - colorFrom[1]) / steps
step_B = (colorTo[2] - colorFrom[2]) / steps

编辑:并且,正如 jasonharper 所指出的,您可能正在进行整数除法。不清楚你的类型是什么。如果您使用 Python 2,/ 是整数除法。在Python3中,是浮点数。