Мультицветная декоративная подсветка на светодиодах

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт апр 08, 2010 21:08:31

Сообщение Zooch »

Есть желание сделать такую штуку: RGB светодиод (или матрица из 3-х) управляется драйверами с шим-модуляцией яркости свечения, три шим канала драйверов подключены к выходам микроконтроллера, на входе его ацп стоит переменный резистор. Идея такая, чтобы резистор при вращении от края до края менял цвет RGB - матрицы во всём спектре видимых цветов. Т.е. программа обрабатывает изменение напряжения на входе ацп, преобразуя эту линейную характеристику в набор RGB кодов и меняет тем самым цвет освещения. Про зависимость цвета от яркости каналов можно в принципе не думать, ибо вещь чисто декоративная и цвет применяться будет на глаз.
Вот промышленный вариант:

http://www.ledart.ru/catalog/9/74/

Основная проблема в том, что с контроллерами знаком только на общем уровне, и хотелось бы узнать, как создать такую программу. Или если кто то знает, где найти рабочую схему с прошивкой, пожалуйста ткните пальцем)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 35639
Зарегистрирован: Вс янв 25, 2009 21:16:04
Откуда: Москва

Сообщение Brigadir »

Интересный вопрос: самое время не использовать чужие "прошивки" , а самому подсчитать, подумать, написать и похвалиться всем Котам: "я научился работать с микроконтроллером!". Здесь есть 2 пути: 1 - содрать чужую схему и прошивку 1 в 1 и ничему и не научиться. 2 - самому разобраться во всех тонкостях(Коты консультацией помогут, если что неясно) и гордиться достигнутыми успехами. И в ближайщем будущем уже Вы будете учить маленьких котят и консультировать их. Удачи в Ваших начинаниях!
А поболтать?
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1205
Зарегистрирован: Пт май 08, 2009 18:02:32

Сообщение Skysmoker »

А нафиг на МК?...
Лично я бы начал мутить на логике или рассыпухе (У нас в дярёвне о МК и не слыхивали...). :))) :))) :)))
[b][color=#FF0000][size=120][u]КАР[/u]фаген ДОЛЖЕН БЫТЬ РАЗРУШЕН.[/size][/color][/b]
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Сообщение Modest »

Да, на логике для начала наверное проще будет. И лучше использовать 3 переменных резистора, на каждый канал, та удобней будет.
Но если решитесь собирать на мк, схема получится минимальной ( светодиоды можно повешать прямо на порт мк без дополнительных ключей,
+ одна, или как вариант три, кнопки), всё упрётся только в программу.
А для написания простой программы хватит недельки неторопливой пролистки пары книжек.
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

там не надо резистор, а нужен валкодер
в алгоритме слишком много матана для меня

например красный 255 синий и зеленый по нулям
прибавляем по двойке синий и по единице зеленый
дошли до 127 и начинаем убавлять красный

надо пробовать
тематические ответы только в форуме, в приват не пишите
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1205
Зарегистрирован: Пт май 08, 2009 18:02:32

Сообщение Skysmoker »

Матан, как раз, не проблема: формула выводится довольно легко. :)
Правда, выражение выходит длинноватое...
По прикидкам - всё просто, а на практике - хз, буду думать, если что-то РГБшное в руки попадет... :)))
[b][color=#FF0000][size=120][u]КАР[/u]фаген ДОЛЖЕН БЫТЬ РАЗРУШЕН.[/size][/color][/b]
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Сообщение Modest »

Если использовать одну кнопку, или один валкодер, как предложили, то перебирать все значения цвета будет занимать приличный промежуток времени.
Если взять 64 градации цвета, то полчится 64*64*64 = 262`144 значения придётся прокручивать валкодером -> неудобно.
(если 256*256*256 = 16`777`216 :shock: )
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Вымогатель припоя
Аватара пользователя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52

Сообщение Symbiosis »

А я решил использовать синус для такой задачи. Насколько оправдано ? Другие решения этого вопроса для меня не были очевидными, подскажите как еще можно прокрутить всю палитру...
Вложения
sin.jpg
(192.02 КБ) 450 скачиваний
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Сообщение 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

А лучше загуглить и посмотреть существующие математические модели цветов, там есть формулы
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Ср янв 07, 2009 19:30:23

Сообщение kris95 »

Да пуска на МК делает. Это проще.
А бригадир, вы сами то сможете хотя бы повторить чужое устройство на МК ? А уже всех быдлокодерами обозвали.
\
Я что то похожее делал уже, только с двухцветным светиком.
Вымогатель припоя
Аватара пользователя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52

Сообщение Symbiosis »

Нашел математические цветовые модели. Но не смотря на содержание в названии "математические", никакой математики не обнаружено ))) Поделитесь ссылкой или статьей, объясняющей как генерировать цветовой круг в системе RGB. Если надо вот это обработать ( http://upload.wikimedia.org/wikipedia/c ... XYZCMF.png ) то в принципе справлюсь. Но конечно бы хотелось формулу.

По алгоритму который вы написали, можно ли больше комментариев, например что означает стрелочка. Это мол зафиксировали одни каналы, а тот что со стрелочкой увеличиваем пока не дойдем до предела ?
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Сообщение Modest »

Symbiosis писал(а):По алгоритму который вы написали, можно ли больше комментариев, например что означает стрелочка. Это мол зафиксировали одни каналы, а тот что со стрелочкой увеличиваем пока не дойдем до предела ?
Правильно, этот алгоритм как раз для RGB модели.
на С
r = Color & 255 ;
g = Color / 256 & 255 ;
b = Color / 65536 & 255 ;

и изменяем в цикле Color от 0 до 256*256*256=16`777`215
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение 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; а на вход функции подаем значение полученное с переменника. Выход функции можно сразу загонять в ШИМ.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Сообщение Modest »

Информативный пост, почитал, полезно.
Но для начинающего легче для понимания RGB модель.
HSV даёт главным образом удобное управление цветом.
Но разницы в цвете между RGB и HSV моделью мы незаметим.
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

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

Вернуться в «Умные мысли»