如何将单个电位器值转换为 R、G、B?
How do I convert a single potentiometer value to R,G,B?
我正在使用输出值 0-255 的电位计。我想要它做的是以包含 256 个步骤的方式更改 RGB LED 的颜色,这将以尽可能高的精度显示 LED 上的所有颜色 you can得到.
问题:
我如何将单个值 (0-255) 转换为可应用于 LED 的 rgb 代码?
最明显的解决方案是创建一个包含所有 256 个可能值的字典,然后手动将 RGB 代码分配给这些值。我不想这样做,我正试图找到一个更数学化的解决方案。
使用 matplotlib colormaps 之一。我会推荐 jet
颜色图,因为大多数人都熟悉蓝色表示小值而红色表示大值的解释。
from matplotlib import cm
pot_values = [0, 51, 102, 153, 204, 255]
rgb = []
for x in pot_values:
val = cm.jet(float(x)/255)[:3] # The 4th element is gamma
rgb.append([round(x*255) for x in val])
print(rgb)
# Output:
# [[0.0, 0.0, 128.0],
# [0.0, 76.0, 255.0],
# [41.0, 255.0, 206.0],
# [206.0, 255.0, 41.0],
# [255.0, 104.0, 0.0],
# [128.0, 0.0, 0.0]]
我正在使用输出值 0-255 的电位计。我想要它做的是以包含 256 个步骤的方式更改 RGB LED 的颜色,这将以尽可能高的精度显示 LED 上的所有颜色 you can得到.
问题: 我如何将单个值 (0-255) 转换为可应用于 LED 的 rgb 代码?
最明显的解决方案是创建一个包含所有 256 个可能值的字典,然后手动将 RGB 代码分配给这些值。我不想这样做,我正试图找到一个更数学化的解决方案。
使用 matplotlib colormaps 之一。我会推荐 jet
颜色图,因为大多数人都熟悉蓝色表示小值而红色表示大值的解释。
from matplotlib import cm
pot_values = [0, 51, 102, 153, 204, 255]
rgb = []
for x in pot_values:
val = cm.jet(float(x)/255)[:3] # The 4th element is gamma
rgb.append([round(x*255) for x in val])
print(rgb)
# Output:
# [[0.0, 0.0, 128.0],
# [0.0, 76.0, 255.0],
# [41.0, 255.0, 206.0],
# [206.0, 255.0, 41.0],
# [255.0, 104.0, 0.0],
# [128.0, 0.0, 0.0]]