Это обычной плотности, двойной имеет 300 LED
Вид для печати
ага, ссылка на ленту одинарной плотности.
Chip, цена на ленты двойной плотности в вашем магазине уже известна?
Chip если всё же будете редактировать программу по возможности добавьте регулировку яркости по зонам.
Подскажите плз, как в for добавить несколько значений?
PHP код:
for( x = 0 ; value_r <= 153; value_g <= 153; value_r+=5 value_g+=5 )
Не понял я вопрос ???
Использую RGB
Плавно увеличивает value_r (яркость красного)PHP код:
for( x = 0 ; value_r <= 153; value_r+=5 )
а как что бы вместе с value_r увеличивался и value_g, если одно значение то понятно, а нужно чтобы красный например загорался до 153 а зеленый (value_g) до 100, чтобы одновременно повышались значения до заданого каждому. Как то так :)
PHP код:
for (x=0; x <= 10; i++)
{
value_r=value_r+x;
value_g=value_g+x;
value_b=value_b+x;
if value_r > 255 {value_r=255;}
if value_g > 255 {value_g=255;}
if value_b > 255 {value_b=255;}
}
Скорее нечто подобное требуется.PHP код:
dest_r=153;
dest_g=100;
dest_b=10;
for( i =0; i<255; i++){
value_r = i*dest_r/256;
value_g = i*dest_g/256;
value_b = i*dest_b/256;
}
в результате будет пропорциональное линейное наростание яркости до нужных значений (цвета).
Хочу себе сделать нечто подобное тоже. Но только буду использовать не ленту, а суперяркие RGB светодиоды примерно как в оригинальном эмбилайте. По 8 сбоку и по 12-14 сверху и снизу. В идеале хочу управлять каждым в отдельности, но пока хотя бы сделаю зон 16. Как реализовать это в железе - уже примерно догадываюсь, благо с МК дружу, и травление плат более ни менее освоил. TQFP 64 распаять могу ))).
Проблема только в том, что в программировании на ПК - я дуб дубом ))). Хочется конечно писать свой софт... Поэтому если не трудно, наведите меня хотя бы на правильный путь. На чём будет правильнее писать такого рода программы, какие библиотеки использовать и можно ли всё-таки как-то работать с выводом DX? А точнее с VMR9 или EVR?
Спасибо )
А для чего софт писать? Он же уже написан.
Хочу свой софт, с блэк.... с открытым кодом т.е. :)
Ну и потом может хоть будет повод освоить кодинг )
http://www.youtube.com/watch?v=Ts3ubXyUGqw
вот здесь на мой взгляд классный результат получился. От филипса почти не отличить...
На динамических тормозит
Там в софте есть регулировка плавности... ИМХО это из-за этого...
Оригинальный эмбилайт, судя по всему, сам настраивает плавность изменения цвета в зависимости от сцены... Но если выбрать между плавными переходами и резкими - по мне так лучше плавные. Я пробовал смотреть 3х зонный самопальный эмбилайт у друга, так долго глаза устают смотреть, когда цвета слишком резко меняются.
Ясное дело, что алгоритмы еще нужно сто раз дорабатывать... Филипс тоже не за один вечер всё сделал )
Ну вот о чём и речь... Нужно, чтобы при резкой смене всего кадра - подсветка реагировала мгновенно, а при небольших изменениях по краям - менялась плавно, чтобы не было эффекта мерцания...
Поэтому и хочется софт с открытыми исходниками :)
Chip работа над программой идёт? :-)
24 всё же наверно перебор)), но не обязательно их ползунками делать, в конфиг файле например прописать, просто у меня телек на стене висит под наклоном, низ ярче получается... А вообще яркость не так важна, главное выбор монитора.
Если есть опыт работы с несколькими рабочими столами , то прошу помочь.
Вот нашел кое что .
Нет второго монитора попробовать, но по всей видимости нужно вот это:PHP код:
procedure TForm1.FormCreate(Sender: TObject);
const
ENUM_CURRENT_SETTINGS = -1;
ENUM_REGISTRY_SETTINGS = -2;
var
dm: DEVMODE;
dc: HDC;
oldBrush: HBRUSH;
LastError: Cardinal;
begin
Memo1.Clear;
ZeroMemory(@dm, sizeof(dm));
dm.dmSize := sizeof(dm);
EnumDisplaySettings('\\.\DISPLAY2', Cardinal(ENUM_REGISTRY_SETTINGS), dm);
dc := CreateDC('\\.\DISPLAY2', nil, nil, @dm);
if (dc = 0) then
begin
LastError := GetLastError();
Memo1.Lines.Add(SysErrorMessage(LastError) + ' (' + IntToStr(LastError) + ')');
end;
oldBrush := SelectObject(dc, GetStockObject(WHITE_BRUSH));
Rectangle(dc, 0, 0, dm.dmPelsWidth, dm.dmPelsHeight);
MoveToEx(dc, 0, 0, nil);
LineTo(dc, dm.dmPelsWidth, dm.dmPelsHeight);
SelectObject(dc, oldBrush);
DeleteDC(dc);
end;
PHP код:
EnumDisplaySettings('\\.\DISPLAY2', Cardinal(ENUM_REGISTRY_SETTINGS), dm);
dc := CreateDC('\\.\DISPLAY2', nil, nil, @dm);
Chip, а если изображение выводится через EVR или VMR в "эксклюзивном" режиме (монитор один), твоя прога будет работать?
Поделись кодом )))))
Что такой EVR или VMR ?
Рендерер. А с DXVA работать будет? И зачем она у меня библиотеку FTDI просит? )
Потому что FTDI мост в схеме Ардуино установлен
Помогите чайнику!).Серьезно надумал собрать это устройство.Уважаемый Chip вы указали 9 транзисторов и 10 резисторов,но я вижу только 9.И ещё я не понимаю как оно питается,нужен ли трансформатор и куда подключать ток.И для того чтобы оно работало нужен компор(в смысле чтобы его запрограмировать или с тем софтом который вы выложили ничего прогать уже ненадо?).Если какие то вопросы кажутся вам глупыми или смешными то наверное в силу моего возраста)
Огромное спасибо!
Так вроде нет секрета, скетч в открытом доступе лежит
первый байт это префикс равный 255 остальные данные о цветах, порядок и количество цветов можно посмотреть в файле конфига программы
Ну, там же не исходники :)
Ты же не передаёшь отступы и прочее на платку...
По моему скромному мнению, самое простое было бы что-то типа:
prefix->RED[0]->GREEN[0]->BLUE[0]->...RED[N]->GREEN[N]->BLUE[N]
где N - номер последней зоны. Или как-то по-другому?
Раз секрета нет, то не мог бы описать структуру данных и команды, если есть что-то кроме записи данных по каналам? Можно исходник хедэра (надеюсь, там все комментарии есть ;))
Из файла config.txt этого непонятно.
Там именно исходники проги для arduino. В ней стоит ожидание 255, а затем - тупо пихается принимаемое в массив. Из массива именно так все рассылается на ключи R1G1B1R2G2B2...
SBorovkov уже написал
ловим префикс 255 и далее по порядку
С каждой зоны передаются по три байта RGB, первым идет R, второй G, третий B
Цитата:
**********каналы по зонам и в порядке передачи данных**************
Left_X = 0; отступ от левого края в процентах
Left_Y =10; отступ с верху в процентах
Left_W =15; шрина в процентах
Left_H =80; Высота в процентах
Right_X=80; отступ от левого края в процентах
Right_Y=10; отступ с верху в процентах
Right_W=15; шрина в процентах
Right_H=80;
Top_X = 10; отступ от левого края в процентах
Top_Y = 10; отступ с верху в процентах , для пропуска черной полосы на широкоформатных фильмах
Top_W = 80; шрина в процентах
Top_H = 15; Высота в процентах
Bottom_X =10; отступ от левого края в процентах
Bottom_Y =70; отступ с верху в процентах
Bottom_W =80; шрина в процентах
Bottom_H =20; Высота в процентах
------------------------------------
Left1_X=0;
Left1_Y=0;
Left1_W=1;
Left1_H=1;
Right1_X=0; отступ от левого края в процентах
Right1_Y=0; отступ с верху в процентах
Right1_W=1; шрина в процентах
Right1_H=1;
Top1_X = 0; отступ от левого края в процентах
Top1_Y = 0; отступ с верху в процентах , для пропуска черной полосы на широкоформатных фильмах
Top1_W = 1; шрина в процентах
Top1_H = 1; Высота в процентах
Bottom1_X =0; отступ от левого края в процентах
Bottom1_Y =0; отступ с верху в процентах
Bottom1_W =1; шрина в процентах
Bottom1_H =1; Высота в процентах
-------------------------------------
Left2_X = 0; отступ от левого края в процентах
Left2_Y = 0; отступ с верху в процентах
Left2_W =1; шрина в процентах
Left2_H =1; Высота в процентах
Right2_X=0; отступ от левого края в процентах
Right2_Y=0; отступ с верху в процентах
Right2_W=1; шрина в процентах
Righ2t_H=1;
Top2_X = 0; отступ от левого края в процентах
Top2_Y = 0; отступ с верху в процентах , для пропуска черной полосы на широкоформатных фильмах
Top2_W = 1; шрина в процентах
Top2_H = 1; Высота в процентах
Bottom2_X =0; отступ от левого края в процентах
Bottom2_Y =0; отступ с верху в процентах
Bottom2_W =1; шрина в процентах
Bottom2_H =1; Высота в процентах
-------------------------------------
Left3_X = 0; отступ от левого края в процентах
Left3_Y = 0; отступ с верху в процентах
Left3_W = 1; шрина в процентах
Left3_H = 1; Высота в процентах
Right3_X=0; отступ от левого края в процентах
Right3_Y=0; отступ с верху в процентах
Right3_W=1; шрина в процентах
Right3_H=1;
А, не посмотрел, что в первом постинге есть исходник для Ардуино.
Т.е. предусматривается, что платка точно знает сколько зон задействовано, так? И вся синхронизация строится на том, что префикс должен прийти только после того, как все каналы переданы. Или предусмотрено, что цвет не может быть равен 0xFF?
Какое максимальное значение для каждого цвета предусмотрено? Как здесь уже отмечалось, разницу в интенсивности свечения между значениями, скажем, в диапазоне 250...255, человеческий глаз скорее всего не заметит, зато можно предусмотреть какие-нибудь ещё команды.
Да, кстати, шифтеры на базе великолепной идеи SBorovkovа я нарисовал и сделал платки (пока только 8 штучек для первого этапа тестирования), но пока не тестировал. Там, правда, и тестировать особо нечего. :) Каждая плата обслуживает 2 зоны. Если интересно, могу показать схемку и фотку (или 3D картинку из CAD) того, что получилось. Основную плату прототипа заказал, но её запустят в изготовление только 4 октября (раньше там не получилось).
Ну, и чтобы поставить все точки над i, если интересно, конечно :). Если неинтересно, то дальше можно не читать. :)
===============================================
Почему я всё это спрашиваю. Делаю аналогичную систему, но для работы с реальным видеосигналом, т.е. на входе стоит видеодекодер композитного сигнала (любой плейер имеет выход композитного сигнала), информация с него перекодируется в RGB и, соответственно, поступает на входы ШИМов. Далее понятно, вы здесь сами это уже всё обсуждали. Думал на втором этапе брать сигнал с HDMI для компьютерного видео, но потом пришла в голову идея, что поскольку у меня предусмотрена связь с PC через FT245, то почему бы не воспользоваться твоей, Chip, программой для видео, показываемого с HTPC. И тогда останется только одна проблема - как вытащить видео сигнал из ТВ для работы ChudaSvet™ или ChudaLight™, пока ещё не решил :D ещё и при приёме с эфира. Раньше некоторые ТВ имели выход для записи эфира на видеомагнитофон, но теперь такого, вроде нет. :(
Среднее значение целой зоны практически невозможно что бы она имела цвет 0xFF ели даже зона и будет иметь такой цвет, то еще нужно изменить размер пакета. Без префикса проверял тоже работает стабильно, по большему счету префикс не нужен это я для совместимости влепил.
По поводу остального, что бы обрабатывать видеосигнал на лету придется писать на ASM-е, какой контроллер хочешь использовать?
Предпочитаю иметь подстраховку :) Юзеры, как правило, чего только не придумают :) На этом форуме, возможно этого делать не будут. А на том, где я, в основном, обитаюсь, прогнать через полную заливку экрана одним из основных цветов процентов 10 точно захотят. Поэтому я бы предпочёл просто ограничить максимальное значение некоторым значением, близким к максимуму.
Это только когда данные поступают непрерывным потоком. Но даже в этом случае лучше иметь некоторое подобие синхронизации. Стоит это недорого, но гарантирует правильное восстановление информации даже при каком-либо сбое. Так что правильно влепил :)Цитата:
Без префикса проверял тоже работает стабильно, по большему счету префикс не нужен это я для совместимости влепил.
не контроллерами едиными жив человек :) На самом деле даже для такой простейшей обработки видео, которая здесь нужна, требуется слишком скоростные DSP или ARM. Сигнал с декодера поступает с частотой 27МГц. Не каждая птица... А это получается слишком дорого. Поэтому использую FPGA и дизайн на Verilog.Цитата:
По поводу остального, что бы обрабатывать видеосигнал на лету придется писать на ASM-е, какой контроллер хочешь использовать?
Я думаю, что даже в том случае, если будет заметное количество зон с цветом 255, за счет динамичности картинки, эти зоны будут меняться. И первый же кадр без цветов 255 приведет к синхронизации передающей и принимающей стороны.
:o
Если будешь использовать мой код и с ним будут проблемы, обращайся. Помню, там было несколько не очень очевидных моментов по оптимизации, когда этот код ваял.
Кстати, ленту я купил, 5 метров, а вот подсветку так и не собрал.
По поводу эфира - не знаю как другие телеки, а мой samsung lcd шлет в видеовыход (тюльпан) эфир, если смотришь эфир или hdmi сигнал. То есть hdmi он не преобразовывает в видео, продолжая слать эфир.