реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Беспорядочное включение светодиодов, КАК СОЗДАТЬ ЭФФЕКТ ХАОСА
at90
сообщение Aug 19 2005, 04:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Появилась такая проблемка:
Есть 13 8 битных шим каналов. На каждом шиме висит по светодиоду.
Ндадо их беспорядочно включать. На проблема состоит в том что
зажигание должно происходть плавно плавно зажечь и плавно потушить.
Шимы 8 битные.
Есть ли какие нибудь решения, кроме как расписать таблицу. У больно сдоровая она получается. wacko.gif


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
arttab
сообщение Aug 19 2005, 05:34
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Обработчик плавного включения напиши. А хаос можно по разному создать. Помниться у Хоровица и Хила в "исскуство схемотехники", по цифре, был аппаратный генератор на сдвиговом регистре с обратными связями.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
at90
сообщение Aug 19 2005, 05:58
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(arttab @ Aug 19 2005, 08:34)
Обработчик плавного включения напиши. А хаос можно по разному создать. Помниться у Хоровица и Хила в "исскуство схемотехники", по цифре, был аппаратный генератор на сдвиговом регистре с обратными связями.
*


Обработчик плавного включения написан. Я могу зажечь любой светодиод
меняя значения шима от 0 до255 и обратно.

Мне нужно сделать чтобы светодиоды работали как бы назависимо. Они быстро загорались другие медленно. Воббщем чтобы создавался эффект
ХАОСА. biggrin.gif


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
nml
сообщение Aug 19 2005, 06:13
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 13-06-04
Из: Minsk
Пользователь №: 29



Цитата(at90 @ Aug 19 2005, 08:58)
Мне нужно сделать чтобы светодиоды работали как бы назависимо. Они быстро загорались другие медленно. Воббщем чтобы создавался эффект
ХАОСА. biggrin.gif
*

Генератор случайных чисел - вот выход... Соответственно должен быть массив требуемых яркостей и массив текущих. При генерации какого-то числа (чисел) требуемая яркость устанавливается в 0 или максимум, в прерывании тимера - текущая +-1 едет к требуемой. Получается нечто типа заставки "звездное небо" Нортона.

Во всяком случае, именно так я делал когда-то когда решил освоить PIC (правда, на этом девайса все и закончилось - но каждый Новый год оно висит на окне и исправно моргает светодиодами... много там было режимов) :-)
Go to the top of the page
 
+Quote Post
lolikandr
сообщение Aug 19 2005, 06:56
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 25-06-05
Пользователь №: 6 300



Когда я придумывал такой алгоритм, то делал следующее. Прописывал для каждого канала период повторения, длительность, скорость нарастания, спада. Можно добавить случайную флуктуацию периода повторения или чего-то еще. То есть хранить в ПЗУ надо не более двух-шести параметров для одного канала. А уж в программе отсчитывать время и генерировать непосредственные значения для ШИМ. Правда при этом нужно столько счетчиков времени в ОЗУ, сколько есть каналов.
Go to the top of the page
 
+Quote Post
lolikandr
сообщение Aug 19 2005, 07:03
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 25-06-05
Пользователь №: 6 300



А по поводу гирлянды на Новый Год - я поступил проще. Собрал несколько медленных генераторов на логических микросхемах и повесил их на транзисторные ключи через RC цепочки, получилось много каналов с плавным включением-выключением и разной частотой cool.gif .
Go to the top of the page
 
+Quote Post
at90
сообщение Aug 19 2005, 07:23
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(nml @ Aug 19 2005, 09:13)
Цитата(at90 @ Aug 19 2005, 08:58)
Мне нужно сделать чтобы светодиоды работали как бы назависимо. Они быстро загорались другие медленно. Воббщем чтобы создавался эффект
ХАОСА. biggrin.gif
*

Генератор случайных чисел - вот выход... Соответственно должен быть массив требуемых яркостей и массив текущих. При генерации какого-то числа (чисел) требуемая яркость устанавливается в 0 или максимум, в прерывании тимера - текущая +-1 едет к требуемой. Получается нечто типа заставки "звездное небо" Нортона.

Во всяком случае, именно так я делал когда-то когда решил освоить PIC (правда, на этом девайса все и закончилось - но каждый Новый год оно висит на окне и исправно моргает светодиодами... много там было режимов) :-)
*



Надо попробовать такой алгоритм. только в таймере у меня шим сидит.


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
CDT
сообщение Aug 19 2005, 09:45
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



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


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
at90
сообщение Aug 19 2005, 11:05
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(CDT @ Aug 19 2005, 12:45)
Простейшая таблица хаоса - программный код, если его достаточно много и читать его сдвигаясь и повторяясь по ряду простых чисел. По мере обращения можно еще инвертировать, переворачивать и пр.
Когда-то мы так быстро и успешно память тестировали.
*


Так тогда светодиоды будут просто мигать. А мне нада плавные переходы


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
BVU
сообщение Aug 19 2005, 11:42
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(CDT @ Aug 19 2005, 15:05)
Так тогда светодиоды будут просто мигать. А мне нада плавные переходы .
*


В этом случае необходимо иметь массив значений состояния на каждый светодиод хранящий так информацию об интенсивности(яркости) свечения, так и о "векторе" свечения(увеличение свечения или уменьшения).
Я думаю это не займет слишком много ОЗУ, тем более, что массив можно организовать оптимально, так же можно использовать битовую структуру а это даст еще большую экономию оперетивной памяти.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
at90
сообщение Aug 22 2005, 10:53
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(BVU @ Aug 19 2005, 14:42)
Цитата(CDT @ Aug 19 2005, 15:05)
Так тогда светодиоды будут просто мигать. А мне нада плавные переходы .
*


В этом случае необходимо иметь массив значений состояния на каждый светодиод хранящий так информацию об интенсивности(яркости) свечения, так и о "векторе" свечения(увеличение свечения или уменьшения).
Я думаю это не займет слишком много ОЗУ, тем более, что массив можно организовать оптимально, так же можно использовать битовую структуру а это даст еще большую экономию оперетивной памяти.
*



Решил данную проблему таким образом:
Расписал вручную таблицу синуса, т.е. значения от 0 до255 255..0.
приэтом проститав плавное загорание и тушение светодиода. Так как данная зависимость не линейная.
На каждый канал завёл по три байта: первый байт смешение в таблице,
второй байт делитель частоты таймера, третий байт счётчие какнала.
Работает так:
устанавливаем счетчики канала равным делителям канала.
По каждому тику таймера декрементируем счётчики. как только счетчик равен 0 инрементируем смешение в таблице. Приравниваем счётчику значения делителя.
Заносим в шим значание из таблицы синуса.
pwm[i]=sin_table[смещение];
Таким образом происходит рассинхронизация шимов.
Перемещая делители по кругу или по случано мы получим хаотичное зажигание светодиодв smile.gif smile.gif smile.gif smile.gif smile.gif smile.gif smile.gif


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
andrei0404
сообщение Nov 11 2005, 21:28
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 13-08-05
Пользователь №: 7 600



Чет я не понял зачем таблица синусов?
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Nov 12 2005, 10:43
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Ниже код rand() из С++ Visual Studio. Переписать её под asm не сложно. Вся суть после return.

int __cdecl rand (
void
)
{
#ifdef _MT

_ptiddata ptd = _getptd();

return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );

#else /* _MT */
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif /* _MT */
}
Go to the top of the page
 
+Quote Post
at90
сообщение Nov 14 2005, 09:06
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(Oleg_IT @ Nov 12 2005, 13:43) *
Ниже код rand() из С++ Visual Studio. Переписать её под asm не сложно. Вся суть после return.

int __cdecl rand (
void
)
{
#ifdef _MT

_ptiddata ptd = _getptd();

return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );

#else /* _MT */
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif /* _MT */
}


Таблица синусов это распианная таблица яркостей светодиодов вручную. от 0 да255 и от 255 до 0.
Типа один полупуриод. Каждый шим канал с определённой скороти проходит по этой таблице и мы тогда получаем разное изменения скорости яркости на всех каналах. Изменяя скорости покугу для всех каналов получаем беспорядочное изменение яркостей.(хаос). И ненада никаких случайных генераторов. С генеоатором плавно не получится. Еслиб мне нада были беспорядочные вспышки-тогда генератор подходит.


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 19:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016