Страница 1 из 1
Мультицветная декоративная подсветка на светодиодах
Добавлено: Чт июл 29, 2010 08:45:09
Zooch
Есть желание сделать такую штуку: RGB светодиод (или матрица из 3-х) управляется драйверами с шим-модуляцией яркости свечения, три шим канала драйверов подключены к выходам микроконтроллера, на входе его ацп стоит переменный резистор. Идея такая, чтобы резистор при вращении от края до края менял цвет RGB - матрицы во всём спектре видимых цветов. Т.е. программа обрабатывает изменение напряжения на входе ацп, преобразуя эту линейную характеристику в набор RGB кодов и меняет тем самым цвет освещения. Про зависимость цвета от яркости каналов можно в принципе не думать, ибо вещь чисто декоративная и цвет применяться будет на глаз.
Вот промышленный вариант:
http://www.ledart.ru/catalog/9/74/
Основная проблема в том, что с контроллерами знаком только на общем уровне, и хотелось бы узнать, как создать такую программу. Или если кто то знает, где найти рабочую схему с прошивкой, пожалуйста ткните пальцем)
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Чт июл 29, 2010 20:38:17
Brigadir
Интересный вопрос: самое время не использовать чужие "прошивки" , а самому подсчитать, подумать, написать и похвалиться всем Котам: "я научился работать с микроконтроллером!". Здесь есть 2 пути: 1 - содрать чужую схему и прошивку 1 в 1 и ничему и не научиться. 2 - самому разобраться во всех тонкостях(Коты консультацией помогут, если что неясно) и гордиться достигнутыми успехами. И в ближайщем будущем уже Вы будете учить маленьких котят и консультировать их. Удачи в Ваших начинаниях!
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб июл 31, 2010 14:39:23
Skysmoker
А нафиг на МК?...
Лично я бы начал мутить на логике или рассыпухе (У нас в дярёвне о МК и не слыхивали...).

Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб июл 31, 2010 21:40:26
Modest
Да, на логике для начала наверное проще будет. И лучше использовать 3 переменных резистора, на каждый канал, та удобней будет.
Но если решитесь собирать на мк, схема получится минимальной ( светодиоды можно повешать прямо на порт мк без дополнительных ключей,
+ одна, или как вариант три, кнопки), всё упрётся только в программу.
А для написания простой программы хватит недельки неторопливой пролистки пары книжек.
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 01, 2010 09:37:57
kalobyte
там не надо резистор, а нужен валкодер
в алгоритме слишком много матана для меня
например красный 255 синий и зеленый по нулям
прибавляем по двойке синий и по единице зеленый
дошли до 127 и начинаем убавлять красный
надо пробовать
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 01, 2010 13:46:06
Skysmoker
Матан, как раз, не проблема: формула выводится довольно легко.

Правда, выражение выходит длинноватое...
По прикидкам - всё просто, а на практике - хз, буду думать, если что-то РГБшное в руки попадет...

Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 01, 2010 14:04:37
Modest
Если использовать одну кнопку, или один валкодер, как предложили, то перебирать все значения цвета будет занимать приличный промежуток времени.
Если взять 64 градации цвета, то полчится 64*64*64 = 262`144 значения придётся прокручивать валкодером -> неудобно.
(если 256*256*256 = 16`777`216

)
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб авг 14, 2010 08:11:18
Symbiosis
А я решил использовать синус для такой задачи. Насколько оправдано ? Другие решения этого вопроса для меня не были очевидными, подскажите как еще можно прокрутить всю палитру...
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб авг 14, 2010 08:56:06
Modest
С синусом не будет всей палитры.
Алгоритм примерно по этому принципу
R =255
G ->255
B = 0
R ->0
G =255
B = 0
R =0
G =255
B ->255
R =0
G ->0
B =255
R ->255
G =0
B =255
R =255
G =0
B ->0
R ->255
G ->255
B ->255
R ->0
G ->0
B ->0
А лучше загуглить и посмотреть существующие математические модели цветов, там есть формулы
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб авг 14, 2010 10:34:37
kris95
Да пуска на МК делает. Это проще.
А бригадир, вы сами то сможете хотя бы повторить чужое устройство на МК ? А уже всех быдлокодерами обозвали.
\
Я что то похожее делал уже, только с двухцветным светиком.
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб авг 14, 2010 13:09:53
Symbiosis
Нашел математические цветовые модели. Но не смотря на содержание в названии "математические", никакой математики не обнаружено ))) Поделитесь ссылкой или статьей, объясняющей как генерировать цветовой круг в системе RGB. Если надо вот это обработать (
http://upload.wikimedia.org/wikipedia/c ... XYZCMF.png ) то в принципе справлюсь. Но конечно бы хотелось формулу.
По алгоритму который вы написали, можно ли больше комментариев, например что означает стрелочка. Это мол зафиксировали одни каналы, а тот что со стрелочкой увеличиваем пока не дойдем до предела ?
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Сб авг 14, 2010 18:53:28
Modest
Symbiosis писал(а):По алгоритму который вы написали, можно ли больше комментариев, например что означает стрелочка. Это мол зафиксировали одни каналы, а тот что со стрелочкой увеличиваем пока не дойдем до предела ?
Правильно, этот алгоритм как раз для RGB модели.
на С
r = Color & 255 ;
g = Color / 256 & 255 ;
b = Color / 65536 & 255 ;
и изменяем в цикле Color от 0 до 256*256*256=16`777`215
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 15, 2010 15:00:05
WildCat
Вот есть готовый светильник такой, со встроенной цветомузыкой даже. Но управление от ПК там.
http://decada.org.ru/project/electronic/rgb_svet/
А для выбора цвета есть однозначное решение. Для полного спектра удобнее всего взять модель HSV, так как в ней есть искомый компонент Hue, отвечающий за цвет на всем спектре. Из этой модели есть полный математический перевод в RGB, он очень простой и описан формулами:
http://ru.wikipedia.org/wiki/HSV_%28%D1 ... .86.92_RGB
В нашем случае компоненты S и V мы принимает за 100%, чтобы получить яркий насыщенный цвет. Тогда, приведя параметр Hue к шкале 0-1024 (диапазон АЦП МК при использовании в качестве регулятора резистора

) можно получать точные компоненты RGB для каждого из положений резистора. Хотя стандартных 360 градусов там более чем достаточно.
Вот пример кода для перевода из HSV в RGB:
Код: Выделить всё
void HSV2RGB (unsigned char &r, unsigned char &g, unsigned char &b,
unsigned int i_hue, unsigned char sat, unsigned char val)
/* Вход:
* 0 <= hue < 360 градусов - оттенок. Основные цвета:
* 0 - красный, 60 - желтый,
* 120 - зеленый, 180 - голубой
* 240 - синий, 300 - пурпурный
* hue == 360 - неопределён !!!
* Остальные цвета между ними
* 0 <= sat <= 255 - Saturation - насыщенность
* 0 <= val <= 255 - Value - светлота
*
* Выход:
* 0 <= r,g,b <= 255 - значения красного, зеленого, синего
*/
{
int ii;
double fr, hue;
unsigned char c1, c2, c3;
if (!sat)
r = g = b = val;
else
{ /* Хроматический цвет */
while (i_hue >= 360)
i_hue -= 360;
hue = i_hue;
ii = (int)(hue /= 60.0);
fr = hue - ii;
c1 = (val * (255 - sat)) / 255;
c2 = (val * (255 - sat * fr)) / 255;
c3 = (val * (255 - sat * (1.0 - fr))) / 255;
switch (ii)
{
case 0: r = val; g = c3; b = c1; break;
case 1: r = c2; g = val; b = c1; break;
case 2: r = c1; g = val; b = c3; break;
case 3: r = c1; g = c2; b = val; break;
case 4: r = c3; g = c1; b = val; break;
case 5: r = val; g = c1; b = c2; break;
} // switch
} // if (!sat)
} // HSV 2 RGB
В начале кода просто прописываем sat=255;val=255; а на вход функции подаем значение полученное с переменника. Выход функции можно сразу загонять в ШИМ.
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 15, 2010 18:27:23
Modest
Информативный пост, почитал, полезно.
Но для начинающего легче для понимания RGB модель.
HSV даёт главным образом удобное управление цветом.
Но разницы в цвете между RGB и HSV моделью мы незаметим.
Re: Мультицветная декоративная подсветка на светодиодах
Добавлено: Вс авг 15, 2010 21:04:07
WildCat
Разницу заметим в преобразовании

РГБ не дает возможности регулирования одним параметром оттенка цвета, а ХСВ позволяет это. Так что по сути перевод из системы в систему есть единственно верное решение реализации того, что хочет автор

Остальные алгоритмы либо не будут давать полный спектр, либо будут так или иначе совпадать с переводом в ХСВ.