Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Эффекты на WS2812


Эффекты на WS2812

Сообщений 1 страница 30 из 47

1

Я тут тоже немного не выдержал, когда получил маленький доступ к ws2812b...

0

2

А что за алгоритмы используются, можно поподробнее?

0

3

Всё просто: программа на компьютере снимает участок экрана, затем данные преобразуются и отправляются на железку. На компьютере берём любой плеер с визуализацией и подкладываем участок визуализатора под место снятия скрина программы.
Гибкость получается сумасшедшая, т.к. подбирать эффекты можно любые и дальнейшее применение весьма обширны.

0

4

Очень интересное решение!
А настольная программа на VB написана?

0

5

Да, на VB6.

Вообще всё как всегда, попросил приятель на работе, на дуню написать/зашить аля "драйвер" для WS-ки (делал в баскоме), он это всё хотел рулить в Node.js (на малине), я в шутку это всё проделал, а потом сам взял и подсел, начал тему потихоньку развивать, начиная от простых эффектов и вот в итоге, во что вылилось.
Просто эффекты мне выдавали более 60 fps (видимо упёрлось всё как-то в обновление экрана), а вот эта штука с скринами, заметно просадила fps до 35-40, но пока отлично смотрится.
У приятеля всё работает на обычном последовательном порте.
Для себя сделал всё по "танковому", использовал параллельный порт на FT245. Эта штука, что не пихаю, всё не почем (на производительности никак не сказывается, всё упирается (как не смешно) в комп). Управляю естественно напрямую драйвером (через D2xx).

Отредактировано RDW (2015-12-13 22:37:54)

0

6

Получается принцип захвата изображения как амбилайте, только для визуализации звука! Круто, есть куда развиваться.
А проект закрытый или нет?

0

7

Чтобы FPS не просаживался, нужно делать как приложения, записывающие видео с экрана. Визуализация плеера обычно происходит через DirectX и нужно поступать как при записи видео с игр - внедрять DLL в процесс плеера и ставить хук на функцию завершения прорисовки картинки на экране, где копировать картинку и передавать ее в отдельный поток анализа и вывода в устройство.

0

8

radan написал(а):

А проект закрытый или нет?

Я бы это даже проектом не назвал, баловство на скорую руку. ;)

Пётр, вот для этого я чую надо на Си прыгать, но так ломает...потому как "скринелка" в играх не во всех работает (да и с производительностью вопросы тогда возникнут), а я думал как раз к этому свести, дабы можно было делать свои визуализационные клавы/геймпады. Надо будет поискать ещё в инете.

Отредактировано RDW (2015-12-13 23:12:02)

0

9

RDW написал(а):

баловство на скорую руку


Может быть можно с этим баловством народу поближе познакомиться? :cool:

0

10

RDW написал(а):

Пётр, вот для этого я чую надо на Си прыгать

Не обязательно. DLL можно написать на VB6, правда он создает ActiveX...

0

11

Я уже не раз говорил на форуме, что исходники не выкладываю, только куски/советы.
Если интересно железо, как редактировать ft245 или некий конечный результат (hex/exe) - не проблема, поделюсь. Хотя в железе там всё примитивно (всё в голове, даже не рисовал), думаю можно собрать на любом МК, который по портам потянет 8 бит данных и 4 сигнала управления + выход на ws.

зы: я кстати делал всё под хмегу А4.

-1

12

Я имел в виду конечный результат.
Можно на лайтпортале заметку сделать, идея то интересная.

0

13

Для портала/статьи, надо довести до какого-то конечного результата. То что сейчас есть, ещё имеет много недоделок (много, что не устраивает, хотя и так работает).
radan, если у вас есть опыт работы с PC/железом, то можете попробовать с своей стороны написать свою версию ПО, под имеющийся протокол. Вообще там конечно много вопросов, например один из общего плана: сколько WS должно быть? У меня сейчас заложено 128 (всегда передаётся), но в обработке используется (пока) только 4х4=16 шт. Вот жду когда мне приедет матрица 8х8. При количестве в 128 светодиодов, можно две матрицы уже подключить. Но тут непонятно как с софтом на PC, конечно в идеале всё бы нужно писать на Си, но я так не сумел в этом направлении пойти, в общем не знаю я Си.  :shine:

0

14

RDW написал(а):

в идеале всё бы нужно писать на Си

Почему вы считаете что непременно нужно писать на Си? Каждый пишет на том что знает или больше нравится. Почти все современные ЯП имеют примерно одинаковые возможности и то что написано на одном, с большой долей вероятности можно написать на многих других.
Что не получается сделать на VB6?

0

15

В VB6 очень ограниченный набор типов переменных. Много заботы о пользователе языком. На лету делается многое то, что отнимает лишнюю производительность. Есть задачи, где задержки и ресурсопотребление должны быть минимальны. Ну и выхлоп должен быть приближен к машинному коду. Да VB его отлично генерит, но не во всех случаях. Впрочем сейчас эти все современные языки и так много избыточного делают... :D

0

16

RDW написал(а):

В VB6 очень ограниченный набор типов переменных.

Вроде нет только 8-ми байтных целых, а остальное есть. :)

RDW написал(а):

Есть задачи, где задержки и ресурсопотребление должны быть минимальны.

Тогда можно написать код, требующий максимальной производительности на другом ЯП, скомпилировать его в DLL и вызывать из основной программы. :)

Отредактировано Пётр (2015-12-14 12:54:42)

0

17

Пётр написал(а):

Вроде нет только 8-ми байтных целых, а остальное есть.

Например нет word, есть только integer, там вообще проблема с целочисленными переменными, не однократно только из-за этого приходилось извращаться. Максимум есть byte и всё.
Так же приходится извращаться, чтобы получить простое переполнение числа. Например, мне нужно посчитать контрольную сумму массива, беру байт, вот что бы его посчитать, приходится брать тип Integer и отдельными условиями/вычислениями делать это переполнение байта - это ппц! В том же баскоме такого нет - и слава богу!
Вот это я называю избыточностью!

Пётр написал(а):

скомпилировать его в DLL

Тогда целесообразность использование VB, если можешь где-то ещё создать ту самую нужную DLL/OCX. :D

Отредактировано RDW (2015-12-14 14:42:12)

0

18

RDW написал(а):

radan, если у вас есть опыт работы с PC/железом, то можете попробовать с своей стороны написать свою версию ПО, под имеющийся протокол

Опыт есть - времени нет...
Было время - не было опыта, или не было опыта - было время.
Вообщем нужно чем то одним заниматься - или работой, или хобби.

0

19

В общем, когда приду к какому-то логическому результату - отпишу.

0

20

Спасибо, ждём, очень интересно, успехов!

0

21

RDW написал(а):

Тогда целесообразность использование VB, если можешь где-то ещё создать ту самую нужную DLL/OCX.

Целесообразность возможно есть, ведь обычно только небольшая часть кода, должна выполняться максимально быстро.
Но если есть желание попробовать другие ЯП, можно посмотреть эту тему. помогите научиться писать программы под Win

0

22

В общем программу для PC накропал. Есть некоторые непонятки с изредким повисанием (возможно из-за какого-то системного конфликта, неочевидного), но программа работает. Ещё до сих пор не определился с некоторым алгоритмом... Выглядит пока так:

http://s3.uploads.ru/t/tGyL9.png

Программа сама рассчитывает коррекцию яркости под ток, если лень использовать внешнее питание и хочется всю матрицу запитать от USB. Кстати говоря, яркость у WS сумасшедшая. Мне вообще показалось, что чем тише светит - тем симпатичнее смотрится, хотя хуже перемешивается цвет.

С DirectX пока облом, пробовал шерстить инет, всё весьма не радужно, т.к.: времени прошло много, всё что есть под VB6 использует старый 6, 7 DirectX (ясен пень, этих библиотек нет в Win7, но если попытаться скачать их, то нет информации для это задачи и примеры на другой функционал, очень странно работает (всё тормозит). Есть один проект современный, называется EasyHook, но он только под NET. :( Печаль в общем...

0

23

RDW написал(а):

но он только под NET.  Печаль в общем...


Переход на NET - 2 недели максимум.
А затем постоянное заглатывание новой порции информации, чтобы держать себя в тонусе.
Я тоже начинал на VB6, а сейчас спокойно работаю и на  VBNET, и на C#.
Нужно просто сделать шаг.
Мне по работе пришлось этот шаг сделать вынужденно, но я об этом не жалею :)

0

24

Я принципиально против NET, из-за того, что в систему требуется принудительно ставить кучу пакетов (дополнительно) чтобы оно работало.
Для VB6 я могу писать программы и для старых ВинОС, которые не требуют супер установок библиотек (достаточно их приложить с EXE-ом).
Так же не уверен, что его не нужно покупать, он же вроде платный? А версия экспресс бесплатная и имеет какие ограничения?

-1

25

Экспресс бесплатная. Есть ограничения на работу с базами данных, но это уже серьёзный софт.
В принципе можно делать инсталляцию и включать туда всё необходимое для работы твоей программы.
А фреймворки начиная с висты уже предустановлены.

0

26

VB6 тоже платный, только его уже не продают...

.NET конечно хорошо, но управляемый код не самое лучшее решение для хуков.

RDW написал(а):

всё что есть под VB6 использует старый 6, 7 DirectX

Нужно не использование DX, а перехват функций DX в конкретном приложении. Обычно такое делают подгружая свою DLL в нужный процесс.

0

27

Пётр, я смотрю ты в этом разбираешься, может поможешь мне и соберешь DLL/OCX для VB6?

0

28

VB6 создает ActiveX-DLL о чем я писал выше, а нужна процедурная DLL. Конечно можно попытаться создать процедурную, ка написано тут, но это не очень удобно.
А вот как на VB6 перехватывать функции DX, понятия не имею.

0

29

Вот статья о создании скрина видеоплеера. http://habrahabr.ru/post/111339/

0

30

Хех, с видео проблем не наблюдаю, BitBlt его и так кушает.

0

Похожие темы


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Эффекты на WS2812