Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将单个电位计值转换为R、G、B?_Python_Python 3.x_Math_Rgb_Led - Fatal编程技术网

Python 如何将单个电位计值转换为R、G、B?

Python 如何将单个电位计值转换为R、G、B?,python,python-3.x,math,rgb,led,Python,Python 3.x,Math,Rgb,Led,我用的是一个电位计,输出一个0-255的值。我想让它做的是改变RGB LED的颜色,以包含256个步骤的方式显示LED上的所有颜色,并尽可能精确地显示 问题: 如何将单个值(0-255)转换为可应用于LED的rgb代码 最明显的解决方案是创建一个包含所有256个可能值的字典,并手动将RGB代码分配给这些值。我不想这样做,我正试图找到一个更数学的解决方案。使用其中一个。我建议使用jetcolormap,因为大多数人都熟悉蓝色表示小值,红色表示大值的解释 from matplotlib import

我用的是一个电位计,输出一个0-255的值。我想让它做的是改变RGB LED的颜色,以包含256个步骤的方式显示LED上的所有颜色,并尽可能精确地显示

问题: 如何将单个值(0-255)转换为可应用于LED的rgb代码

最明显的解决方案是创建一个包含所有256个可能值的字典,并手动将RGB代码分配给这些值。我不想这样做,我正试图找到一个更数学的解决方案。

使用其中一个。我建议使用
jet
colormap,因为大多数人都熟悉蓝色表示小值,红色表示大值的解释

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]]

你想要什么样的精度?你要找哪种颜色的地图?您可能需要先看一看,因为确定三种颜色如何映射到256个值的集合会影响要使用的数学方程。每个LED的范围是什么?也是0到255?rgb值是0到255之间的三元组值。因此,您的单个0-255范围必须进行映射。请解释LED值采用何种格式?它是模拟的还是数字的,如果模拟意味着什么范围?如果数字意味着多少位?没有这些信息,问题就不完整了。@SreekanthKarumanaghat我的LED接受数字输入,但我用PWM改变它的强度。为了回答这个问题,假设我的LED接受红色、绿色和蓝色二极管的值为0-255,这正是我想要的。我可以说matplotlib可能是我最不希望拥有此功能的库。@JanekMuria使用
matplotlib
的好处在于,通过从
cm.jet
切换到
cm.cool
cm.nipy\u spectrum
cm.rainbow
,可以相对容易地尝试不同的颜色贴图。