2016-09-06 8 views
1

私は0〜255の値を出力するポテンショメータを使用しています。私がそれをしたいのは、RGBの色を変えて、LEDの色をすべて正確に表示する256ステップを含む方法です。を取得します。どのようにして1つのポテンショメータ値をR、G、Bに変換できますか?

質問: 私はLEDに適用できるrgbコードにその単一の値(0-255)をどのように変換しますか?

最も明白な解決策は、すべての256の可能な値を持つ辞書を作成し、それらの値に手動でRGBコードを割り当てることです。私はこれをやりたくないので、私はより数学的な解決法を見つけようとしています。

+0

どのような精度が欲しいですか?どんな種類のカラーマップをお探しですか? 3色を256色の値にどのようにマッピングさせるかを決定するには、使用する数式にどのような影響を及ぼすかを判断するために、まずhttp://matplotlib.org/users/colormaps.htmlを見てください。 – JAB

+0

各LEDの範囲は何ですか - 0〜255ですか? – stdunbar

+0

rgbの値は0から255までの値の三つ組です。したがって、あなたの単一の0-255の範囲は何らかの形でマップされなければなりません –

答えて

1

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

これはまさに私が探していたものです。 matplotlibはおそらくこの機能を持っていないと思われるライブラリだと言えます。 – Janekmuric

+1

@Janekmuricこれに対して 'matplotlib'を使うのは、' cm.cool'、 'cm.nipy_spectral'、' cm.rainbow'に切り替えることで、色々なカラーマップを試してみるのは比較的簡単です。等 –

関連する問題