2016-09-06 2 views
1

Я использую потенциометр, который выводит значение 0-255. Я хочу, чтобы это изменило цвет светодиода RGB таким образом, чтобы он содержал 256 шагов, которые будут показывать все цвета на светодиоде с максимальной точностью. вы можете получить.Как преобразовать значение одного потенциометра в R, G, B?

Вопрос: Как бы преобразовать, что одно значение (0-255) к коду RgB, что я могу применить к светодиоду?

Наиболее очевидным решением является создание словаря со всеми 256 возможными значениями и ручное определение кодов RGB для этих значений. Я не хочу этого делать, и я пытаюсь найти более математическое решение.

+0

Какую точность вы хотите? Какую цветовую карту вы ищете? Вы можете сначала взглянуть на http://matplotlib.org/users/colormaps.html, поскольку определение того, как вы хотите, чтобы три цвета отображались на ваш набор из 256 значений, влияет на использование математических уравнений. – JAB

+0

Каковы диапазоны для каждого светодиода - также от 0 до 255? – stdunbar

+0

Значения rgb представляют собой триплет значений от 0 до 255. Таким образом, ваш одиночный диапазон 0-255 должен отображаться каким-то образом –

ответ

1

Используйте один из matplotlib colormaps. Я бы порекомендовал colormap 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.jet' на 'cm.cool',' cm.nipy_spectral', 'cm.rainbow' , и т.д. –

Смежные вопросы