gpt4 book ai didi

python - 愚蠢的问题 : Is there a way to make a color pattern repeat every X number of LEDs? 或者我是否必须为 strip 中的每个 LED 写出模式?

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:59 27 4
gpt4 key购买 nike

我有一个由 288 个可寻址 LED 组成的 strip ,它被分成了多个段,每个段有 12 个 LED。我已经为一个片段编写了一堆颜色和图案代码。单一颜色很容易调整以填充所有部分,但我还没有完全弄清楚如何在不复制/粘贴和更正像素数的情况下制作图案。非常感谢任何见解,我将附上一个模式的副本作为示例。 (所有的图案都非常简单,基本上是两到三种颜色在整个片段中分解)

我刚刚尝试了一些谷歌搜索,并使用我已经知道的东西来尝试想出一种方法让它发挥作用。

import board
import neopixel
import time
pixels = neopixel.NeoPixel(board.D18, 288)

pixels[0] = (25, 255, 255)
pixels[1] = (25, 255, 255)
pixels[2] = (25, 255, 255)
pixels[3] = (25, 255, 255)
pixels[4] = (155, 155, 155)
pixels[5] = (155, 155, 155)
pixels[6] = (0, 0, 255)
pixels[7] = (0, 0, 255)
pixels[8] = (0, 0, 255)
pixels[9] = (0, 0, 255)
pixels[10] = (155, 155, 155)
pixels[11] = (155, 155, 155)

我想让这种模式在整个 288 个 LED 灯条上重复。

最佳答案

让我们首先设置我们在以下每个解决方案和辅助函数中使用的模式:

pattern = [
(25, 255, 255),
(25, 255, 255),
(25, 255, 255),
(25, 255, 255),
(155, 155, 155),
(155, 155, 155),
(0, 0, 255),
(0, 0, 255),
(0, 0, 255),
(0, 0, 255),
(155, 155, 155),
(155, 155, 155)
]

def roundup(numerator, denominator):
return (numerator + denominator - 1) // denominator

roundup 函数基于此 answer这在这里适用,因为它被应用于从长度派生的变量,这将是整数。

1) 你可以像这样很容易地打包图案,它应该灵活地适应不同长度的图案或 LED 灯条:

len_strip = 288
len_pattern = len(pattern)

pixels = (pattern * roundup(len_strip,len_pattern))[:len_strip]

2) 这是一种可以遍历此模式(而不是整个数组)的方法:

pixels = [0]*288

for i in range(len(pixels)//12):
pixels[12*i:12*i+12] = pixel_pattern

这会将它打包,这样您就可以遍历图案而不是遍历每个像素。

3) 如果你想打包它来处理不同长度的图案或 LED 阵列,你可以尝试像这样更灵活的东西:

pixels = [0]*288
strip_len = len(pixels)

pattern_len = len(pixel_pattern )

for i in range(roundup(len(pixels),pattern_len)):
chunk_start = pattern_len*i
chunk_end = chunk_start + pattern_len
if chunk_end<strip_len:
pixels[chunk_start:chunk_end] = pixel_pattern
else:
chunk_end = strip_len
pixels[chunk_start:chunk_end] = pixel_pattern[0:chunk_end-chunk_start]

4) 如果你想在循环模式的同时解决每个问题,你也可以这样做:

pixels = [0]*288

for i in range(len(pixels)//12):
pixels[12*i+0] = (25, 255, 255)
pixels[12*i+1] = (25, 255, 255)
pixels[12*i+2] = (25, 255, 255)
pixels[12*i+3] = (25, 255, 255)
pixels[12*i+4] = (155, 155, 155)
pixels[12*i+5] = (155, 155, 155)
pixels[12*i+6] = (0, 0, 255)
pixels[12*i+7] = (0, 0, 255)
pixels[12*i+8] = (0, 0, 255)
pixels[12*i+9] = (0, 0, 255)
pixels[12*i+10] = (155, 155, 155)
pixels[12*i+11] = (155, 155, 155)

关于python - 愚蠢的问题 : Is there a way to make a color pattern repeat every X number of LEDs? 或者我是否必须为 strip 中的每个 LED 写出模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com