|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:46 pm
Алгоритъм за цветна преливка ..
| Автор |
Съобщение |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Алгоритъм за цветна преливка ..
Мдаа и като свършиха глуспотите стигнах до същноста на светодиодите, търся си алгоритъм, не таблици, за преливки, предполагам има математиеско изражение на преливките, говорим за такива като в фотошоп или корел, имаш два цвята и задаваш дали преливката да е линейна и т.н. и то го прави ... с таблица е ясно, даже изрових някакви таблици, но някой дали е срещал алгоритъм ? Таблиците , поне тези които намирам са за конкретни цветови нюанси, че че не мога да видя какви са цветовете в корела и да си направя и таблица но ...
|
| Нед Юни 26, 2016 11:33 am |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Нед Юни 26, 2016 1:41 pm |
|
 |
|
bobihot
Ранг: Форумен бог
Регистриран на: Сря Фев 13, 2013 3:35 pm Мнения: 1803
|
 Re: Алгоритъм за цветна преливка ..
Според мен най-лесно алгоритмично е с плаваща запетая да променяш и взимаш текущото приближение. Целочисленото решение е да намериш за всеки цвят на колко стъпки да се увеличи/намали цвета. Пиши ако не усоееш да си поиграя и ти пратя код.
|
| Нед Юни 26, 2016 1:49 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
Мда, това за квадрата е ясно, то затова и позлвам таблица при регулиране на яркостта, обаче за цветовете ми се иска формула, осен ако няма някоя таблица която да може да се използва за всякакви цветове. Тук говоря не просто за миксиране на зелено и червено като във видеото, а миксиране на база на палетата. Предполагам си виждал в корел или фотошоп като избереш да направиш преливка имаш една окръжност, не точно цветови триъгълник, не знам на какава база е генерирано .. абе качих картинка вместо да обеснявам цветове с думи  Та когато правиш преливка и си избереш двата цвята то те са някъде в тази окръжност, и съответно можеш да избереш преливката да е линейна между двата цвята или да е по дъга съответно по часовата и обратно на часовата стрелка. Каква е идеята, направих си някакъв стандартен формат на цветовата схема, там описвам параметрите, и съотвенто ги има и тези относно преливката. Така когато се правят цветовите схеми за устройството дизайнерите ще могат директно да си ги гледат в графичните редактори и да е ясно че това което ще зададът в конфига ще генерира нещо близо до това което са си представяли. Има разбира се и друг подход, доста по грубиянски, такак или иначе ще има софтуерче с кеото да си конфигурират схемите, винаги може да генерирам таблица от избраните преливки, но това значи да ъплоудвам както цветовите схеми, така и таблиците ... абе някак не ми се харесва, таблиците са хубави за константни и ясни неща, математичекси изглежда по елегантно, а време за смятане има, стига да измисля как да го сметна. Не е невъзможно да се направи таблица описваща тази кртинка, може и да се редуцира като размер на база нюанси, не ми се минава в други формати, RGB орпеделено не е най-подходящият за целта но все пак смятам на 8 битов гад ...
|
| Нед Юни 26, 2016 2:22 pm |
|
 |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 16, 2014 3:36 pm Мнения: 953
|
 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
|
| Нед Юни 26, 2016 3:00 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: Алгоритъм за цветна преливка ..
Тони, това ме интерисува и мен, та ако го направиш свиркай 
|
| Нед Юни 26, 2016 4:24 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
Даниеле, мерси за предложението, за HSL знам, аз затов аписах по горе но нещо не ми се преобразува между цветовите гами, но мож еи да го направя, това е сранвително лесен начин, иначе то най-лесното е ясно какво е, това съм го направил за момент аколкот да връща нещо функцията вдигаш компонентие на квадрат, множаваш по тежестта, корен на цялото и готово ... за нормална преливка между два цвята става, т.е получава се все едно си ги насложил, това което е горе в клипчето на колегата, но ако се търси минаване през други цветове само така няма как, освен ако не се разбие на части според това от къде минаваш. Конверсията към HSL отнема повечко и работата с плаваща запетая, все пак съм с малък гад, но като цяло отдавна си го мисля, то освен преливките има и други екстри, интересни ефекти се правят сравнително лесно. Митко, като го направя проектчето може да го шерна, не е някаква тайна, най-много да махна SAS стека, въпреки че аз не смятам изобщо да му слагам пълен SAS стек, трябват ми 5 команди и толкова, но всичко го оптимизирам за малък процесор, на нещо по-голмо сигурно може да стане и доста по-елегантно.
|
| Нед Юни 26, 2016 5:39 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: Алгоритъм за цветна преливка ..
Мен лично ме съмнява да стане като на компа, защото със светодиодите е различно - има по-голямо разстояние между диодите за трите цвята и каквото и да правиш не стои така хубаво. Ама ми е интересно какво ще постигнеш с това HSL. Мен по ме интерисува колко добре ще стане, а не самия код - математиката всеки може да я напише. Просто искам да ползвам, че сега си ентусиазиран и ти се занимава, за да не се занимавам аз да го правя и нищо да не излезне  . Аз ползвам Кортекс М0+ та и по-такива матиматики не ме бъркат за разлика от теб. ПП. Какво е SAS стек бе  ?
|
| Нед Юни 26, 2016 7:49 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
Уффф ами .. един протокол измислен преди 20-30 години за връзка между игрална машини ... мислен да бъде мултидроп и с много потребители но дори и тези които са го измислили бързо се отказват о тази идея, има разни приложения но минимални в този режим, то причини много ама .... както ида е, не е лошо измислено но е оставено много свободно да се интерпретира, имаш куп състояния в които не е описно какво рпедаваш или как отговаряш, съответно тук всеки разработчик си има свое виждане по въпроса, като имаш в предвид че има 10-на големи играчи с които всеки е гледал да се съобрази, някои от тях пък го поддържат изкуствено .. една голяма манджа с грозе, базовите фунцкионалности са лесно но от там нататък всичко е въпрос на единомислие, т.е. късмет и разбира се тестове .. както и да е, те това е, прост протокол измислен най-вероятно от хардуеристи който последните 10-15 години се развива от програмисти, създаден да предва 20 параметъра а в момента пере, глади, готви, прави парични ауторизации и работи едва ли не като RADIUS ауторизация. А иначе за светодиодите ... ще кача след малко видео но не знам дали ще събера смелост да сглобя подсветката 
|
| Нед Юни 26, 2016 8:18 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
Ето малко но ... https://drive.google.com/open?id=0BzFST ... U0wUmEtV2Mhttps://drive.google.com/open?id=0BzFST ... kQ1VHlGc0Ehttps://drive.google.com/open?id=0BzFST ... GIwZGh2X00https://drive.google.com/open?id=0BzFST ... UR6Z1RGUmMhttps://drive.google.com/open?id=0BzFST ... UxDdGo0cWcТия голите ленти не се виждат много добре но.. Sony / срещу светлината толкова  Домързя ме и да сглобя подсветката както трябва но горе долу се придобива представа как се вижда ако имаш дифузер, а този материал не е много добър, не знам за какво ще го изпозлваш но има много добър на Evonic, а освен това има и едно фолио което прави чудеса, само дето е доста скъпо но е точно в САЩ, мога да те снабдя на OEM цени, че иначе е $800 за 20 м, ОЕМ-ската е горе долу на 1/4 .. по спомен де, купува го субконтрактора ми в Невада, но нещо такова беше, това за 20 мм широчина, обаче прави чудеса, може да сложиш светодиода на 3 мм от него и отпред няма да видиш никаква точка, супер плавна разсейка, ей такива ленти направо ги лепиш зад фолиото, него към 2-3 мм плексиглас и свети като неон, не можеш да разбереш че е лед ако не се движи. п.с. сега забелязах че съм записал и музикален съпровод 
|
| Нед Юни 26, 2016 8:45 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: Алгоритъм за цветна преливка ..
Станало е добре. Демек това широкото е някакво фолио, а зад него имаш такива ленти като тези отзад на стената?
|
| Нед Юни 26, 2016 10:14 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Алгоритъм за цветна преливка ..
Широкото е плексиглас, това конкретно е опал, по принцип е най-евтиното решение за дифузер, няма фолио, разчита се на разсейването на плексигласа и в случая е критично разстоянието до светодиодите и тяхната гъстота. Ако светодиодите не са много на гъсто, тези са 60 на м или са твърде близо, или и двете заедно или пък са твърде намалени започват да се виждат точки, или най-малкото стават петна, т.е. не е хомогенно. За да стане хомогенно на този материал при дебелина 3 мм му трябват поне 10 мм отстояние от леда но и не мога да намаля твърде много леда, това което виждаш е на около 30%. За да стане по-добре има няколко варианта, ето това https://www.youtube.com/watch?v=zQIFORLh4VA , истинска красота, цена в BG при тази дебелина мисля че е 60 лв / кв.м. Друг вариант е едно фолио което го наричат холограмно, нямам представа защо така го наричат, подобно в на различните оптични фолиа които са със шарка но е правено само с една цел, да разсейва, много е добро, по добро е от това което се слага и по LCD матриците. Не съм го гледал под микроскоп но препдолагам има някакви миниатюрни френелови лещи а може и да е много по адванс, имайки в предвид цената и това, че не се произвежда от много доставчици, май само един имаме в САЩ явно не е просто, там цената на кв.м е хил USD. Ако ти трябва за големи площи е скъпо, обикновенно е на ролки с различна широчина, даже не знам онази цена по-горе дали не беше за 30f а не 20м. Нямам линк за това фолио, ако се интересуваш ще кажа на субконтрактора ми да ми пусне инфо. Не съм го намерил аз, друг негов клиент го изпозлва и така го докопах, а и другият клиент изпозлва по няколко стотин м на месец и цената е приятна особенно за конкретната широчина.
|
| Нед Юни 26, 2016 11:22 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: Алгоритъм за цветна преливка ..
На мен реално не ми трябва фолио, защото правя само платките с управлението, но е полезно да имам някаква представа ако нещо стане въпрос.
|
| Нед Юни 26, 2016 11:38 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 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; };
|
| Пон Юни 27, 2016 2:01 am |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: Алгоритъм за цветна преливка ..
Един страничен въпрос - с тия последователно навързани драйвери ако искам да променя цвета само на примерно 100-я светодиод трябва ли пак да предам информацията за цвета на всички навързани светодиоди. Не съм чел дейташита на тоя чип така че не ми се сърди за глупавите въпроси  .
|
| Пон Юни 27, 2016 2:32 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|