尝试通过嵌套列表控制LED的颜色和亮度

时间:2019-07-12 13:41:18

标签: python lighting

我正在使用一个嵌套列表,其中包含我的LED所需的所有颜色和亮度级别。为了向LED灯带发送脉冲,我在一个范围内进行迭代以选择“中央” LED,然后使用中央LED的数字加上或减去1来打开任一侧。这一切都很好,但是我还想让中央LED的亮度降低周围的亮度,而我无法让我的颜色选择功能来识别何时需要降低LED的亮度。

我认为首先要问str(dot_number)是否为x-2,x-1等,它将dot_number识别为字符串,但我认为它仍将其视为整数,因此所有检查x的代码-2,x-1等会被忽略。

#five light pulse:

import time
import random
import board
import adafruit_dotstar as dotstar
dots = dotstar.DotStar(board.D6, board.D5, 15, brightness=1)

#finds the number of dots on the strip:
n_dots = int(len(dots))  

#defines colours as elements in nested lists:
dots_matrix = [[(255,0,0,0.1),(255,0,0,0.5),(255,0,0,1)],
               [(255,50,0,0.1),(255,50,0,0.5),(255,50,0,1)],
               [(0,255,0,0.1),(0,255,0,0.5),(0,255,0,1)],
               [(0,0,0)]]

#re-structured colour choose function:
def colour_choose(dot_number):
    if str(dot_number) == 'x-2' or 'x+2':
        if dot_number < 5:
            return dots_matrix[0][0]
        elif 4 < dot_number < 10:
            return dots_matrix[1][0]
        elif 9 < dot_number < 18:
            return dots_matrix[2][0]
    elif str(dot_number) == 'x-1' or 'x+1':
        if dot_number < 5:
            return dots_matrix[0][1]
        elif 4 < dot_number < 10:
            return dots_matrix[1][1]
        elif 9 < dot_number < 18:
            return dots_matrix[2][1]
    elif str(dot_number) == 'x':
        if dot_number < 5:
            return dots_matrix[0][2]
        elif 4 < dot_number < 10:
            return dots_matrix[1][2]
        elif 9 < dot_number < 18:
            return dots_matrix[2][2]


while True:
    for x in range(3,18):
        dots[(x-2)%n_dots]=colour_choose((x-2)%n_dots)
        dots[(x-1)%n_dots]=colour_choose((x-1)%n_dots)
        dots[(x)%n_dots]=colour_choose((x)%n_dots)
        dots[(x+1)%n_dots]=colour_choose((x+1)%n_dots)
        dots[(x+2)%n_dots]=colour_choose((x+2)%n_dots)
        dots[x-3]=dots_matrix[3][0]
        time.sleep(0)


x + -2应该至少是最亮的,x + -1应该更亮并且x应该最亮,但是所有LED都具有相同的亮度。

0 个答案:

没有答案