【发布时间】:2016-05-13 13:15:30
【问题描述】:
我现在拥有的是下面的循环,它依次点亮每根 24 根 LED 灯。
while True:
for i in range(24):
pixels = [ (0,0,0) ] * numLEDs
pixels[i] = (100, 100, 100)
client.put_pixels(pixels)
time.sleep(0.02)
我想要的是,以前点亮的 LED 在每次迭代时都保持点亮。因此,每轮点亮的 LED 数量都会增加一个。
我假设我可以简单地从列表的开头选择到第 i 个项目,如下所示。 然而,这会返回一个“TypeError: 'int' object is not iterable”。
我不太清楚为什么这不起作用。
while True:
for i in range(24):
pixels = [ (0,0,0) ] * numLEDs
pixels[:i] = (100, 100, 100)
client.put_pixels(pixels)
time.sleep(0.02)
虽然我已经引起了您的注意,但除了使用 time.sleep() 之外,还有更好的方法来为这些循环计时吗?虽然我使用的是线程,但当 LED 模式发生变化时,睡眠仍然会导致一些延迟。
【问题讨论】:
-
我认为即使你的第一个 sn-p 也是完美的,除了初始的
pixels = [(0,0,0)] * numLEDs应该位于 for 循环之前。 -
斯蒂芬,我给出了一个答案,你希望每时每刻都打开两个连续的 LED,但现在我不太确定......如果我误解了你的 Q i很高兴删除我的 A。请告诉我。