Python - RGB LED褪色

时间:2017-01-22 16:40:15

标签: python interpolation rgb lighting

我已经四处寻找广泛尝试在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])

1 个答案:

答案 0 :(得分:3)

听起来你想从colorFrom开始,然后逐渐迈步 直线到达colorTo

此代码的作用是从colorFrom开始,然后增加当前值 颜色就好像是从黑色走到colorTo

如果没有完整的代码,很难确定,但看起来应该是这样 替换这个:

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,/是整数除法。在Python 3中,它是浮点数。