Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Алгоритъм за цветна преливка ..
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14651
Страница 1 от 2

Автор:  ToHu [ Нед Юни 26, 2016 11:33 am ]
Заглавие:  Алгоритъм за цветна преливка ..

Мдаа и като свършиха глуспотите стигнах до същноста на светодиодите, търся си алгоритъм, не таблици, за преливки, предполагам има математиеско изражение на преливките, говорим за такива като в фотошоп или корел, имаш два цвята и задаваш дали преливката да е линейна и т.н. и то го прави ... с таблица е ясно, даже изрових някакви таблици, но някой дали е срещал алгоритъм ? Таблиците , поне тези които намирам са за конкретни цветови нюанси, че че не мога да видя какви са цветовете в корела и да си направя и таблица но ...

Автор:  ike [ Нед Юни 26, 2016 1:41 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

https://www.youtube.com/watch?v=LKnqECcg6Gw

Автор:  bobihot [ Нед Юни 26, 2016 1:49 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Според мен най-лесно алгоритмично е с плаваща запетая да променяш и взимаш текущото приближение. Целочисленото решение е да намериш за всеки цвят на колко стъпки да се увеличи/намали цвета.
Пиши ако не усоееш да си поиграя и ти пратя код.

Автор:  ToHu [ Нед Юни 26, 2016 2:22 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Мда, това за квадрата е ясно, то затова и позлвам таблица при регулиране на яркостта, обаче за цветовете ми се иска формула, осен ако няма някоя таблица която да може да се използва за всякакви цветове. Тук говоря не просто за миксиране на зелено и червено като във видеото, а миксиране на база на палетата. Предполагам си виждал в корел или фотошоп като избереш да направиш преливка имаш една окръжност, не точно цветови триъгълник, не знам на какава база е генерирано .. абе качих картинка вместо да обеснявам цветове с думи :)
Та когато правиш преливка и си избереш двата цвята то те са някъде в тази окръжност, и съответно можеш да избереш преливката да е линейна между двата цвята или да е по дъга съответно по часовата и обратно на часовата стрелка.
Каква е идеята, направих си някакъв стандартен формат на цветовата схема, там описвам параметрите, и съотвенто ги има и тези относно преливката. Така когато се правят цветовите схеми за устройството дизайнерите ще могат директно да си ги гледат в графичните редактори и да е ясно че това което ще зададът в конфига ще генерира нещо близо до това което са си представяли.

Има разбира се и друг подход, доста по грубиянски, такак или иначе ще има софтуерче с кеото да си конфигурират схемите, винаги може да генерирам таблица от избраните преливки, но това значи да ъплоудвам както цветовите схеми, така и таблиците ... абе някак не ми се харесва, таблиците са хубави за константни и ясни неща, математичекси изглежда по елегантно, а време за смятане има, стига да измисля как да го сметна.

Не е невъзможно да се направи таблица описваща тази кртинка, може и да се редуцира като размер на база нюанси, не ми се минава в други формати, RGB орпеделено не е най-подходящият за целта но все пак смятам на 8 битов гад ...

Прикачени файлове:
palet.jpg
palet.jpg [ 27.75 KiB | Прегледано 5412 пъти ]

Автор:  DanielDimov [ Нед Юни 26, 2016 3:00 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Най-добрия и лесен начин е като смениш цветовото пространство от RGB на HSL (Hue, Saturation, Lightness)

Правиш си две функции: първата конвертира от RGB към HSL, а втората конвертира от HSL към RGB

Преливката (която се предполага че ще стане за предварително известно време) се прави така: първо конвертираш началния и крайния цвят в HSL; после изчисляваш колко междинни стъпки ще имаш (n = общото време на преливката разделено на времето за рефреш на светодиодния дисплей); после си изчисляваш каква е стъпката за всеки от трите компонента (Hend - Hbegin)/n; после при всеки следващ рефреш на дисплея увеличаваш текущата стойност на компонента със съответната му стъпка и преобразуваш от HSL към RGB за да изобразиш цвета.

Формули за конвертиране между RGB и HSL има предостатъчно в нета...

Компонентите R, G и B са цяло число от 0 до 255
H, S и L ще са ти от тип float от 0 до 1
n ще е цяло число, а стъпките ще са пак float

Автор:  Dimitar [ Нед Юни 26, 2016 4:24 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Тони, това ме интерисува и мен, та ако го направиш свиркай :)

Автор:  ToHu [ Нед Юни 26, 2016 5:39 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Даниеле, мерси за предложението, за HSL знам, аз затов аписах по горе но нещо не ми се преобразува между цветовите гами, но мож еи да го направя, това е сранвително лесен начин, иначе то най-лесното е ясно какво е, това съм го направил за момент аколкот да връща нещо функцията вдигаш компонентие на квадрат, множаваш по тежестта, корен на цялото и готово ... за нормална преливка между два цвята става, т.е получава се все едно си ги насложил, това което е горе в клипчето на колегата, но ако се търси минаване през други цветове само така няма как, освен ако не се разбие на части според това от къде минаваш.
Конверсията към HSL отнема повечко и работата с плаваща запетая, все пак съм с малък гад, но като цяло отдавна си го мисля, то освен преливките има и други екстри, интересни ефекти се правят сравнително лесно.
Митко, като го направя проектчето може да го шерна, не е някаква тайна, най-много да махна SAS стека, въпреки че аз не смятам изобщо да му слагам пълен SAS стек, трябват ми 5 команди и толкова, но всичко го оптимизирам за малък процесор, на нещо по-голмо сигурно може да стане и доста по-елегантно.

Автор:  Dimitar [ Нед Юни 26, 2016 7:49 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Мен лично ме съмнява да стане като на компа, защото със светодиодите е различно - има по-голямо разстояние между диодите за трите цвята и каквото и да правиш не стои така хубаво. Ама ми е интересно какво ще постигнеш с това HSL. Мен по ме интерисува колко добре ще стане, а не самия код - математиката всеки може да я напише. Просто искам да ползвам, че сега си ентусиазиран и ти се занимава, за да не се занимавам аз да го правя и нищо да не излезне :D . Аз ползвам Кортекс М0+ та и по-такива матиматики не ме бъркат за разлика от теб.

ПП. Какво е SAS стек бе :? ?

Автор:  ToHu [ Нед Юни 26, 2016 8:18 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Уффф ами .. един протокол измислен преди 20-30 години за връзка между игрална машини ... мислен да бъде мултидроп и с много потребители но дори и тези които са го измислили бързо се отказват о тази идея, има разни приложения но минимални в този режим, то причини много ама .... както ида е, не е лошо измислено но е оставено много свободно да се интерпретира, имаш куп състояния в които не е описно какво рпедаваш или как отговаряш, съответно тук всеки разработчик си има свое виждане по въпроса, като имаш в предвид че има 10-на големи играчи с които всеки е гледал да се съобрази, някои от тях пък го поддържат изкуствено .. една голяма манджа с грозе, базовите фунцкионалности са лесно но от там нататък всичко е въпрос на единомислие, т.е. късмет и разбира се тестове .. както и да е, те това е, прост протокол измислен най-вероятно от хардуеристи който последните 10-15 години се развива от програмисти, създаден да предва 20 параметъра а в момента пере, глади, готви, прави парични ауторизации и работи едва ли не като RADIUS ауторизация.
А иначе за светодиодите ... ще кача след малко видео но не знам дали ще събера смелост да сглобя подсветката :)

Автор:  ToHu [ Нед Юни 26, 2016 8:45 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Ето малко но ...
https://drive.google.com/open?id=0BzFST ... U0wUmEtV2M
https://drive.google.com/open?id=0BzFST ... kQ1VHlGc0E
https://drive.google.com/open?id=0BzFST ... GIwZGh2X00
https://drive.google.com/open?id=0BzFST ... UR6Z1RGUmM
https://drive.google.com/open?id=0BzFST ... UxDdGo0cWc

Тия голите ленти не се виждат много добре но.. Sony / срещу светлината толкова :) Домързя ме и да сглобя подсветката както трябва но горе долу се придобива представа как се вижда ако имаш дифузер, а този материал не е много добър, не знам за какво ще го изпозлваш но има много добър на Evonic, а освен това има и едно фолио което прави чудеса, само дето е доста скъпо но е точно в САЩ, мога да те снабдя на OEM цени, че иначе е $800 за 20 м, ОЕМ-ската е горе долу на 1/4 .. по спомен де, купува го субконтрактора ми в Невада, но нещо такова беше, това за 20 мм широчина, обаче прави чудеса, може да сложиш светодиода на 3 мм от него и отпред няма да видиш никаква точка, супер плавна разсейка, ей такива ленти направо ги лепиш зад фолиото, него към 2-3 мм плексиглас и свети като неон, не можеш да разбереш че е лед ако не се движи.

п.с. сега забелязах че съм записал и музикален съпровод :D

Автор:  Dimitar [ Нед Юни 26, 2016 10:14 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Станало е добре. Демек това широкото е някакво фолио, а зад него имаш такива ленти като тези отзад на стената?

Автор:  ToHu [ Нед Юни 26, 2016 11:22 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Широкото е плексиглас, това конкретно е опал, по принцип е най-евтиното решение за дифузер, няма фолио, разчита се на разсейването на плексигласа и в случая е критично разстоянието до светодиодите и тяхната гъстота. Ако светодиодите не са много на гъсто, тези са 60 на м или са твърде близо, или и двете заедно или пък са твърде намалени започват да се виждат точки, или най-малкото стават петна, т.е. не е хомогенно.
За да стане хомогенно на този материал при дебелина 3 мм му трябват поне 10 мм отстояние от леда но и не мога да намаля твърде много леда, това което виждаш е на около 30%.

За да стане по-добре има няколко варианта, ето това https://www.youtube.com/watch?v=zQIFORLh4VA , истинска красота, цена в BG при тази дебелина мисля че е 60 лв / кв.м.

Друг вариант е едно фолио което го наричат холограмно, нямам представа защо така го наричат, подобно в на различните оптични фолиа които са със шарка но е правено само с една цел, да разсейва, много е добро, по добро е от това което се слага и по LCD матриците. Не съм го гледал под микроскоп но препдолагам има някакви миниатюрни френелови лещи а може и да е много по адванс, имайки в предвид цената и това, че не се произвежда от много доставчици, май само един имаме в САЩ явно не е просто, там цената на кв.м е хил USD. Ако ти трябва за големи площи е скъпо, обикновенно е на ролки с различна широчина, даже не знам онази цена по-горе дали не беше за 30f а не 20м. Нямам линк за това фолио, ако се интересуваш ще кажа на субконтрактора ми да ми пусне инфо. Не съм го намерил аз, друг негов клиент го изпозлва и така го докопах, а и другият клиент изпозлва по няколко стотин м на месец и цената е приятна особенно за конкретната широчина.

Автор:  Dimitar [ Нед Юни 26, 2016 11:38 pm ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

На мен реално не ми трябва фолио, защото правя само платките с управлението, но е полезно да имам някаква представа ако нещо стане въпрос.

Автор:  ToHu [ Пон Юни 27, 2016 2:01 am ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Ами аз тъкмо го завърших на ниво управление, синхронизация и комуникация. Ако има интерес мога да пусна кода, остава ми да вкарам глупавият сас ама да видим какс а ни писани библиотеките, няма да се учудя ако не са подходящи за тоя малък гад, такак или иначе няма връзка. В момента се управлява, може да се навържат до 32 платки заедно, като целта е да им са синхронни лентите, а не да правят някаква обща картина, въпреки че и това не е никакъв проблем с малко писане още. Полират си се, предават си състоянията, мастъра им мени състоянията .. само дето не знае какви да им казва заради липсващият САС но и това няма значение за общият случай, какво друго ... има една доста специфична цветова схема свързана с конкретното приложение. Структура от 15 цветови схеми, всяка схема има параметри на всеки еидн от 3-те канала лента, и отделно има два масива един с 90 и един с 12 елемента, идеята е всеки елемент от масива да съответства на орпеделено състояние и да мапва съответната цветова схема, през схемата се предват и настройките брой светодиоди на всяка лента, и др.
Самите цветови схеми съдържат инфо за начален, сатртов и допълнителен цвят, тип на ефекта, колко стъпки да с еизпълняват на един цикъл, на какво време да се прави един цикъл ... абе ... те така сигурно е по лесно :)

struct color_m{
unsigned char green;
unsigned char red;
unsigned char blue;
};

struct color{
unsigned char red;
unsigned char green;
unsigned char blue;
};

struct pwm_type{
unsigned char type;
unsigned char speed;
unsigned char param_1;
unsigned char param_2;
float bright;
};

struct led_type{
unsigned char type; // effect type , 0 - runing light, 1 - solid color over whole strip, 2 - floating color over whole strip, 3 - runing light with floating color
struct color color_a; // first color
struct color color_b; // extra color
struct color color_c; // second color
unsigned char speed; // cycles to refresh, 1 refresh at each 20 ms , 2 refresh on each 40 ms etc., each refresh update only one LED except for type 1 and 2
unsigned char steps; // step executed on each refresh, for solid color set to number of LED's. it works as a multiplayer on the refresh cycle
unsigned char param_2; // lenght of segement, when floathing color is used set this to the max LED's on the strip to have whole color. If set to 5 the extra color
// or the mixed color on the segment in mode 0 nad 3 will be 5 LED long
float bright; // brightnes
unsigned char repeat; // how to repeat, 0 - swing (0>1>0), 1 reset (0>1; 0>1; 0>1) when 1 direction is always form first LED to the last LED, may be modified on request
};

struct state_scheme{
struct led_type side_lights;
struct led_type toper_lights;
struct led_type body_lights;
struct pwm_type back_lights;
};

struct color_scheme{
struct state_scheme base_schemes[6]; // should be 15, reduced because the RAM limitation, the uC should be upgraded
unsigned char game_map[80]; // selected game - map tp color scheme
unsigned char state_map[13]; // game state - map to color scheme
unsigned char segment_a; // leds in channel a
unsigned char segment_b; // leds in channel b
unsigned char segment_c; // leds in channel c
unsigned long minor_win; // winning limits
unsigned long major_win;
unsigned long grand_win;
unsigned long minor_jp;
unsigned long major_jp;
unsigned long grand_jp;
};

Автор:  Dimitar [ Пон Юни 27, 2016 2:32 am ]
Заглавие:  Re: Алгоритъм за цветна преливка ..

Един страничен въпрос - с тия последователно навързани драйвери ако искам да променя цвета само на примерно 100-я светодиод трябва ли пак да предам информацията за цвета на всички навързани светодиоди. Не съм чел дейташита на тоя чип така че не ми се сърди за глупавите въпроси :D .

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/