Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/74: Рейтинг темы: голосов - 74, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 801

генерирование RGB цвета

25.11.2014, 14:51. Показов 14115. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в планах есть создание светодиодной матрицы на светодиодах WS2812, на ней будут отображаться некие цветовые эффекты, плавные перетекания форм и цветов + информация проползать будет. По железной части всё понятно, но вот споткнулся на генерировании трех байт для задания цвета светодиода. Тупо гонять байты от 0 до 255 - это не интересно, да и не нужны мне яркие цвета, хочется плавной смены оттенка и яркости в небольшом диапазоне.
Может быть посоветуете какую-нибудь программку, чтобы хотя бы приблизительно прикинуть, как в числах всё это будет выглядеть и визуально оценить можно было бы, цветовые градиенты прикинуть.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2014, 14:51
Ответы с готовыми решениями:

RGB как не смешивать цвета
Добрый день! Нужна помощь зала. Имеются 3 кнопки один RGB светодиод кнопки работают, все хорошо. Какое условие необходимо прописать, что...

Изменение цвета rgb светодиода с использованием millis()
Приветствую всех! Хотел попробовать разобраться с rgb светодиодом. Нашел данный код для переключения цветов. Подскажите, как переделать его...

Определение цвета пикселя под курсором и контроль RGB ленты на Arduino
Доброго времени суток уважаемые форумчане! Как получить цвет пикселя под курсором на экране при этом сбрасывать эти данные в массив? И...

33
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
25.11.2014, 15:00
Если гонять просто от 0 до 255, смена яркости будет неравномерная, надо гонять по геометрическому ряду 1,2,4,8,16 и тд.
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
25.11.2014, 15:08
програмку посоветовать не могу, не знаю.
зато могу таким вот кодом поделиться, делал на меге плавный шим для светодиода когда-то давно. может пригодится.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
      .db 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4
.db 4, 4, 4, 5, 5, 5, 5, 6, 6, 6
.db 6, 7, 7, 7, 8, 8, 8, 8, 9
.db 9, 9, 9, 10, 10, 10 ,10, 11, 11, 11
.db 11, 12, 12, 12, 12, 13, 13, 13, 14
.db 14, 14, 15, 15, 15, 16, 16, 17, 17, 17
.db 18, 18, 19, 19, 19, 20, 20, 21, 21, 21
.db 22, 22, 23, 23, 24, 24, 25, 25, 26, 26
.db 26, 27, 27, 28, 28, 29, 29, 30, 30, 31
.db 32, 32, 33, 33, 34, 34, 35, 35, 36, 37
.db 37, 38, 38, 39, 40, 40, 41, 41, 42, 43
.db 43, 44, 45, 45, 46, 47, 47, 48, 49, 49
.db 50, 51, 52, 53, 54, 55, 55, 56, 57
.db 58, 58, 59, 60, 61, 62, 63, 63, 64, 65
.db 66, 67, 68, 69, 70, 70, 71, 72, 73, 74
.db 75, 76, 77, 78, 79, 80, 81, 82, 83, 84
.db 85, 86, 88, 89, 90, 91, 92, 93, 94, 95
.db 97, 98, 99, 100, 101, 103, 104, 105, 106, 108
.db 109, 110, 112, 113, 114, 116, 117, 119, 120, 121
.db 123, 124, 126, 127, 129, 130, 132, 133, 135, 136
.db 138, 140, 141, 143, 144, 146, 148, 150, 151, 153
.db 155, 157, 158, 160, 162, 164, 166, 168, 169, 171
.db 173, 175, 177, 179, 181, 183, 185, 187, 190, 192
.db 194, 196, 198, 200, 203, 205, 207, 209, 212, 214
.db 216, 219, 221, 224, 226, 229, 231, 234, 236, 239
.db 242, 244, 247, 250, 252, 255
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
25.11.2014, 15:57
Дык, самое простое:

0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.11.2014, 16:02
@Kosym:
Яркость R, G и B в этих светодиодах сильно не одинаковая, поэтому для изменения яркости без изменения цвета я делаю инкремент/декремент G:R:B (в WS2812 именно в таком порядке) с разным весом. Например, ggggggggrrrrrrrrbbbbbbbb += 0x020104; или += 0x010104. Как-то так, поэкспериментируйте со своими WSками: какой вес присвоить каждому цветовому компоненту.

Большие значения (больше, чем 0x20 в компоненте - у меня WS2812B с повышенной яркостью) вообще не использую, глаза выжигает :-)

И, как правильно заметил fr0stir, изменение яркости происходит по ~логарифмическому закону, нет смысла линейно градиентить.

P.S. WS2812/12B нормально работают и при пониженном напряжении (пробовал 3.3V - OK), но меняется общая яркость и соотношение яркостей R/G/B. Так что обеспечьте стабильность выбранного напряжения питания, иначе все расчёты "поплывут".
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 801
25.11.2014, 18:44
Цитата Сообщение от OtyxPM
@Kosym:
Яркость R, G и B в этих светодиодах сильно не одинаковая, поэтому для изменения яркости без изменения цвета я делаю инкремент/декремент G:R:B (в WS2812 именно в таком порядке) с разным весом. Например, ggggggggrrrrrrrrbbbbbbbb += 0x020104; или += 0x010104. Как-то так, поэкспериментируйте со своими WSками: какой вес присвоить каждому цветовому компоненту.
то есть как я понял синий канал приблизительно в 4 раза менее чувствительный чем зеленый и красный?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.11.2014, 19:21
Цитата Сообщение от Kosym
то есть как я понял синий канал приблизительно в 4 раза менее чувствительный чем зеленый и красный?
Типа того. В даташите приведены относительные яркости цветовых каналов.
На глаз - сразу заметно, что красный очень яркий, а синий наоборот.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
25.11.2014, 19:25
Особенно если учесть максимальную чувствительность зрения к красному цвету и минимальную к синему :)

ЗЫ И сугубо технические проблемы с созданием синих светодиодов. Красный яркий светодиод создать проще.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.11.2014, 19:30
Цитата Сообщение от fr0stir
максимальную чувствительность зрения к красному цвету
Не-не, человеческое зрение имеет максимум чувствительности в жёлто-зелёной области спектра.

Цитата Сообщение от fr0stir
Красный яркий светодиод создать проще.
А вот это правда. В смысле: получить большую светимость от красного LED проще, чем от зелёного, а у того - проще, чем от синего.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
25.11.2014, 19:51
Цитата Сообщение от OtyxPM
Цитата Сообщение от fr0stir
максимальную чувствительность зрения к красному цвету
Не-не, человеческое зрение имеет максимум чувствительности в жёлто-зелёной области спектра.

Зато логический анализатор в разы быстрее реагирует на красный спектр.
И несмотря на то, что чувствительных к желто-зеленому "пикселей" в глазу больше, чувствительные именно к красному оказываются эффективнее.
Потому одинаково излучающие три светодиода на глаз будут казаться светящимися по разному и красный будет казаться самым ярким.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.11.2014, 20:57
Цитата Сообщение от fr0stir
Потому одинаково излучающие три светодиода на глаз будут казаться светящимися по разному и красный будет казаться самым ярким.
Не фантазируйте, в даташит загляните.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
25.11.2014, 21:09
Цитата Сообщение от OtyxPM
Не фантазируйте, в даташит загляните.
В даташит на глаз? Покажите!
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
25.11.2014, 22:18
Цитата Сообщение от fr0stir
Потому одинаково излучающие три светодиода на глаз будут казаться светящимися по разному и красный будет казаться самым ярким.
Нет, просто у вашего красного скорее всего больше яркость свечения. Подберите резисторы, чтобы "на глаз" яркость казалась одинаковой.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
25.11.2014, 22:25
Я говорил про замер светимости не на глаз, а по показанию прибора, люксметра к примеру.
По приборам светимость будет одинаковая, а на глаз окажется весьма разной.
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
25.11.2014, 23:01
Люксметр реагирует на энергию, а в глазу химические реакции на фотоны реагируют. Длина волны больше >больше фотонов на ту же энергию > больше выхлоп.
O
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 801
27.11.2014, 10:26
Цитата Сообщение от OtyxPM
Цитата Сообщение от Kosym
то есть как я понял синий канал приблизительно в 4 раза менее чувствительный чем зеленый и красный?
Типа того. В даташите приведены относительные яркости цветовых каналов.
На глаз - сразу заметно, что красный очень яркий, а синий наоборот.

а как лучше делать: все эффекты заранее рассчитать и в память матрицу записать или программу визуализатора загнать и рассчитывать на лету все эффекты?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
27.11.2014, 10:43
А это смотря какой ресурс надо экономить - процессорное время или флэш.

Ну и если по ресурсам оба варианта вписываются - то в варианте "считать на лету" проще будет экспериментировать с изменением параметров.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
27.11.2014, 12:30
Я набил красивых эффектов в виде функций, рассчитывающих значения пикселов в массиве. И ещё одна функция есть, которая рендерит этот массив в цепь smartLEDов. Сразу после отработки очередного рендера просчитываются значения в массиве для следующего.
В итоге процессор в основном спит. Кто тут предлагал BAM как альтернативу smartLEDам - могут курить в сторонке :-)
0
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 26
27.11.2014, 13:30
Цитата Сообщение от OtyxPM
Кто тут предлагал BAM как альтернативу smartLEDам - могут курить в сторонке :-)
http://www.eva.org.ru/discussion_club/images/smilies/smoke.gif
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
27.11.2014, 14:59
Цитата Сообщение от oomomstir
А это смотря какой ресурс надо экономить - процессорное время или флэш.
Ну и если по ресурсам оба варианта вписываются ... ...
Делал подгрузку пиксельных данных с SD-карточки. Это сняло проблему ресурса флэша навсегда. Считываю в тот же массив, куда складываются пикселы, посчитанные процессором "на лету", так что оба подхода могут сосуществовать.

Если SD подключать по SPI, то решение подходит ко всем микроконтроллерам, даже хардварно "тонким".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2014, 14:59
Помогаю со студенческими работами здесь

Получить RGB составляющие цвета из строки с наименованием цвета из буфера обмена
Pascal ABC.NET В справке (Стандартные модули\Модуль GraphABC\) есть таблица "Цветовые константы". Цветовые константы представлены...

Цвета RGB
Получаю цвета RGB при помощи Color.FromArgb, но вот засада, мне нужно получить оттенки красного, от еле красного и до красного, а получая...

Глубина цвета и RGB
Дисплей с какой глубиной цвета нужно выбрать, чтобы различить 2 оттенка серого (200, 184, 232) и (216, 216, 216)?

Объявление цвета RGB
привет друзья! в программе буду использовать несколько цветов в разных её частях хотелось бы задать цвет RGB в глобальной зоне...

Плавная смена цвета RGB
Хочу сделать плавную смену цвета, допустим для фона формы. Желательно как в радуге, от красного до фиолетового и так по кругу. Так же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru