# 生成从红色到绿色的256级过渡颜色列表(RGB565格式)
color_list = []
for i in range(256):
    # 红色通道从310x1F)线性递减到0
    red = int(31 * (1 - i / 255))
    # 绿色通道从0线性递增到630x3F    green = int(63 * (i / 255))
    # 组合为RGB565格式(高位在前)
    color = (red << 11) | (green << 5)
    color_list.append(f"0x{color:04X}")

print(color_list)

 

 

my_colors = [0xF800, 0xF000, 0xF000, 0xF000, 0xF000, 0xF020, 0xF020, 0xF020, 0xF020, 0xE840, 0xE840, 0xE840, 0xE840, 0xE860, 0xE860, 0xE860, 0xE860, 0xE080, 0xE080, 0xE080, 0xE080, 0xE0A0, 0xE0A0, 0xE0A0, 0xE0A0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8E0, 0xD8E0, 0xD8E0, 0xD8E0, 0xD100, 0xD100, 0xD100, 0xD100, 0xD120, 0xD120, 0xD120, 0xD120, 0xD140, 0xC940, 0xC940, 0xC940, 0xC960, 0xC960, 0xC960, 0xC960, 0xC980, 0xC180, 0xC180, 0xC180, 0xC1A0, 0xC1A0, 0xC1A0, 0xC1A0, 0xC1C0, 0xB9C0, 0xB9C0, 0xB9C0, 0xB9E0, 0xB9E0, 0xB9E0, 0xB9E0, 0xBA00, 0xB200, 0xB200, 0xB200, 0xB220, 0xB220, 0xB220, 0xB220, 0xB240, 0xB240, 0xAA40, 0xAA40, 0xAA60, 0xAA60, 0xAA60, 0xAA60, 0xAA80, 0xAA80, 0xA280, 0xA280, 0xA2A0, 0xA2A0, 0xA2A0, 0xA2A0, 0xA2A0, 0xA2C0, 0x9AC0, 0x9AC0, 0x9AC0, 0x9AE0, 0x9AE0, 0x9AE0, 0x9AE0, 0x9B00, 0x9300, 0x9300, 0x9300, 0x9320, 0x9320, 0x9320, 0x9320, 0x9340, 0x8B40, 0x8B40, 0x8B40, 0x8B60, 0x8B60, 0x8B60, 0x8B60, 0x8B80, 0x8B80, 0x8380, 0x8380, 0x83A0, 0x83A0, 0x83A0, 0x83A0, 0x83C0, 0x83C0, 0x7BC0, 0x7BC0, 0x7BE0, 0x7BE0, 0x7BE0, 0x7BE0, 0x7C00, 0x7C00, 0x7400, 0x7400, 0x7420, 0x7420, 0x7420, 0x7420, 0x7440, 0x7440, 0x6C40, 0x6C40, 0x6C60, 0x6C60, 0x6C60, 0x6C60, 0x6C80, 0x6C80, 0x6C80, 0x6480, 0x64A0, 0x64A0, 0x64A0, 0x64A0, 0x64C0, 0x64C0, 0x64C0, 0x5CC0, 0x5CE0, 0x5CE0, 0x5CE0, 0x5CE0, 0x5D00, 0x5D00, 0x5D00, 0x5500, 0x5520, 0x5520, 0x5520, 0x5520, 0x5540, 0x5540, 0x5540, 0x4D40, 0x4D40, 0x4D60, 0x4D60, 0x4D60, 0x4D60, 0x4D80, 0x4D80, 0x4580, 0x4580, 0x45A0, 0x45A0, 0x45A0, 0x45A0, 0x45C0, 0x45C0, 0x45C0, 0x3DC0, 0x3DE0, 0x3DE0, 0x3DE0, 0x3DE0, 0x3E00, 0x3E00, 0x3E00, 0x3600, 0x3620, 0x3620, 0x3620, 0x3620, 0x3640, 0x3640, 0x3640, 0x2E40, 0x2E60, 0x2E60, 0x2E60, 0x2E60, 0x2E80, 0x2E80, 0x2E80, 0x2680, 0x26A0, 0x26A0, 0x26A0, 0x26A0, 0x26C0, 0x26C0, 0x26C0, 0x26C0, 0x1EE0, 0x1EE0, 0x1EE0, 0x1EE0, 0x1F00, 0x1F00, 0x1F00, 0x1F00, 0x1720, 0x1720, 0x1720, 0x1720, 0x1740, 0x1740, 0x1740, 0x1740, 0x0F60, 0x0F60, 0x0F60, 0x0F60, 0x0F80, 0x0F80, 0x0F80, 0x0F80, 0x07A0, 0x07A0, 0x07A0, 0x07A0, 0x07C0, 0x07C0, 0x07C0, 0x07C0, 0x07E0]

 

# 双色LED灯通过设计占空比改变灯的亮度和颜色实验

# 1、导入必要库PWMLED(用脉宽调制的方法控制双色LED灯亮度和颜色)
from gpiozero import PWMLED

print(f"PWMLED导入成功")
from time import sleep

# 2、定义颜色和PINmy_colors = [0xff00, 0xee00, 0xbb00, 0xaa00, 0x00ff, 0x00ee, 0x00aa]
my_pins = [17, 18]

# 3、实例化PINpin_red = PWMLED(pin=my_pins[0], initial_value=0, frequency=2000)
pin_green = PWMLED(pin=my_pins[1], initial_value=0, frequency=2000)


# 4、调用固定函数,功能是将当前获取的值0-255,转化为0-100之间
def my_map(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min


# 5、主函数,将获取到的值,转化为用占空比控制
def my_main(col):
    val_red = (col & 0xff00) >> 8
    val_green = (col & 0x00ff) >> 0

    val_red2 = my_map(val_red, 0, 255, 0, 100)
    val_green2 = my_map(val_green, 0, 255, 0, 100)

    pin_red.value = val_red2 / 100.0
    pin_green.value = val_green2 / 100.0


# 6、循环功能
def my_loop():
    while True:
        for col in my_colors:
            my_main(col)
            sleep(0.5)


# 7、关闭PINdef my_cuihui():
    pin_red.close()
    pin_green.close()


# 8、运行功能
if __name__ == "__main__":
    try:
        my_loop()
    # XXXXX 当近下CTRL+C键时
    except KeyboardInterrupt:
        my_cuihui()

-----------------------------------------------------------------
# 双色LED灯通过设计占空比改变灯的亮度和颜色实验

# 1、导入必要库PWMLED(用脉宽调制的方法控制双色LED灯亮度和颜色)
from gpiozero import PWMLED

print(f"PWMLED导入成功")
from time import sleep

# 2、定义颜色和PIN脚
my_colors = [0xFF00, 0xAA00, 0x7700, 0x5500,0x3300,0x1100,0x00ff,0x0055]
my_pins = [17, 18]

# 3、实例化PIN脚
pin_red = PWMLED(pin=my_pins[0], initial_value=0, frequency=2000)
pin_green = PWMLED(pin=my_pins[1], initial_value=0, frequency=2000)

# 4、调用固定函数,功能是将当前获取的值0-255,转化为0-100之间
def my_map(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

# 5、主函数,将获取到的值,转化为用占空比控制
def my_main(col):
val_red = (col & 0xff00 ) >> 8
val_green = (col & 0x00ff) >> 0

val_red2 = my_map(val_red, 0, 255, 0, 100)
val_green2 = my_map(val_green, 0, 255, 0, 100)

pin_red.value = val_red2 / 100.0
pin_green.value = val_green2 / 100.0

# 6、循环功能
def my_loop():
while True:
for col in my_colors:
my_main(col)
sleep(0.5)

# 7、关闭PIN脚
def my_cuihui():
pin_red.close()
pin_green.close()

# 8、运行功能
if __name__ == "__main__":
try:
my_loop()
# XXXXX 当近下CTRL+C键时
except KeyboardInterrupt:
my_cuihui()

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。