Плейер световых эффектов - помогите стать лучше
А я не успел насладиться: на плату случайно ушло 220 и всему пришел писец.

Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
- Реклама
Я вот свою все никак не могу доделать, в октябре-ноябре затянул, а теперь времени нет, просто катастрофа.
[uquote="Riniy",url="/forum/viewtopic.php?p=3763810#p3763810"]
Вот печалька.[/uquote]
Не то слово.
Не то слово.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Доброго!
ARV как всегда на высоте, схема заработала сразу (пока на макетной плате). Небольшие замечания: кратковременные подвисания (0,5 сек) при рандомной смене эффектов; светодиод включил через транзистор - так более заметно его мигание при смене эффектов. В целом - отлично. А ещё -собрал в корпусе DIGILIGHT, ждем возобновления проекта
ARV как всегда на высоте, схема заработала сразу (пока на макетной плате). Небольшие замечания: кратковременные подвисания (0,5 сек) при рандомной смене эффектов; светодиод включил через транзистор - так более заметно его мигание при смене эффектов. В целом - отлично. А ещё -собрал в корпусе DIGILIGHT, ждем возобновления проекта
подвисания связаны исключительно с временем доступа к SD-карте. не гонитесь за ее большим объемом, и заметных подвисаний быть не должно. но, конечно, если у вас много скриптов, и происходит перескок от начала к концу и обратно - задержка все-таки будет... хотя 0,5 сек - это как-то многовато...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Да, 2 Гб карточка явно избыточна здесь. Однако меньшего объёма найти в Митино не удалось. И ещё вопрос: назначение вывода 9. Я использую держатель микро-СД карты без дополнительного переключателя или экрана, просто пластмасса с 8-ю контактами, вот такая:. Эффекты с карты памяти воспроизводятся независимо от логического уровня на этом выводе (подавал +5В через резистор 10 кОм).
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
У мня моргает, все ~200 эффектов поместил на флешку, и рандом включил.[uquote="ARV",url="/forum/viewtopic.php?p=3760619#p3760619"][/uquote]1 елочка как-то мало интересует, а вот украсить карниз дома, метров так 10..., еще вопрос - работают ли ws при отрицательной температуре -20 ... -30?
2 на счет тока, думаю здесь проблема будет если 200 светиков питать,
либо напряжение стабилизируем либо ток, если ток то просадка по напряжению будет, а напряжение можно снижать до минимального рабочего порога. Это то же вопрос? А тоненькие проводки ток в 2А...4А могут уже не выдержать, особенно в начале гирлянды.
3 плавные и неторопливые эффекты, у мня получается так что 30 секунд не хватает до завершения эффекта, 1 проход, надо этот момент как-то отслеживать.
И это не случайность, это последовательность.
Спойлер
2 на счет тока, думаю здесь проблема будет если 200 светиков питать,
либо напряжение стабилизируем либо ток, если ток то просадка по напряжению будет, а напряжение можно снижать до минимального рабочего порога. Это то же вопрос? А тоненькие проводки ток в 2А...4А могут уже не выдержать, особенно в начале гирлянды.
3 плавные и неторопливые эффекты, у мня получается так что 30 секунд не хватает до завершения эффекта, 1 проход, надо этот момент как-то отслеживать.
У крупье рандом эффективнее работает.ARV писал(а):вы это в казино на рулетке крупье скажите
Куда уж там, примерно прикинул в екселе все ваши 25 эффектов перебираются так где-то за 100 "шагов".Serzh2000 писал(а):не хорошо, однако
И это не случайность, это последовательность.
вывод 9 замыкается на общий, если карта вставлена. этот факт позволяет программно отличить ситуацию, когда на карте нет файла от ситуации, когда нет самой карты. если прошло считывание файла конфигурации, то потом читаются только файлы скриптов и, если вынуть карту, может возникнуть ошибка чтения. а вот во время чтения файла конфигурации ошибка чтения не отличается от отсутствия карты... короче, если датчика наличия карты в слоте нет, проводок от 9-контакта надо посадить на общий - должно работать. правда Dimon456, сумел подправить так, что и без этого можно обходиться - я пока не трогал...SP634 писал(а):И ещё вопрос: назначение вывода 9.
как показала практика, светики не потребляют 20 мА на кристалл, т.е. 60 мА при белом свечении. мои 100 светодиодов никогда не потребляют даже 2А. я использую обычный преобразователь питания мощностью около 10 Вт, и после вытыкания его из розетки эффекты еще секунды три продолжают работать - от заряда сетевого конденсатора. так что я сильно затрудняюсь сказать, какой же ток следует использовать в расчетах на 1 светодиод...Dimon456 писал(а):на счет тока, думаю здесь проблема будет если 200 светиков питать
именно по этой причине я сразу предлагал делать гирлянду секциями, где сигнальныф провод идет цепочкой, а питание - блоками по 10 или 20 (или 50) светодиодов. этакая гребенка ШШШШШ, где основное питание снизу, а вверх - отводы. имнно так у меня и сделаноDimon456 писал(а):А тоненькие проводки ток в 2А...4А могут уже не выдержать, особенно в начале гирлянды.
Спойлер

это я не понял: вы же можете изменить длительность работы эффекта до прерывания принудительно... или сделать, как Serzh2000 - применять "конечный" цикл, а не бесконечный. наконец, можно переменным резистором количество повторов цикла задавать... но в принципе, что-то можно и кардинальное придумать...Dimon456 писал(а):плавные и неторопливые эффекты, у мня получается так что 30 секунд не хватает до завершения эффекта, 1 проход, надо этот момент как-то отслеживать.
интересно было бы узнать, как вы это сделалиDimon456 писал(а):Куда уж там, примерно прикинул в екселе все ваши 25 эффектов перебираются так где-то за 100 "шагов".
И это не случайность, это последовательность.
с другой стороны, сделайте 2 автомата, оба одновременно включите - и они будут воспроизводить разные эффекты в разном порядке. разве этого мало?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
У вас в этом видео на 5-40, в общем переделывать все эффекты не вариант, надо как-то по другому.ARV писал(а):это я не понял:
А за чем предугадывать? Я просто в протеусе взял массив rang[0-100] = rnd(25) а потом екселе подсчитал, но не учел что функция rand() у вас используется чаще чем я ее вызывал.ARV писал(а):интересно было бы узнать, как вы это сделали
Но да же и этот вариант показывает не нужен криптографический уровень, не нужна высокая случайность, но как-то не вариант 25 эффектов ждать 30-50 минут, пусть да же по 30 секунд на эффект.
Я не понимаю, что не так. Как бы вы хотели, чтобы 25 эффектов случайно отрабатывали? Имхо, случай в том и случай, что из 25 эффектов за час какой-то может и не выпасть ни разу...
Я долго бился с функцией rand, но так и не смог сделать лучше, чем сейчас. Если есть идеи по улучшению, готов обсудить.
Я долго бился с функцией rand, но так и не смог сделать лучше, чем сейчас. Если есть идеи по улучшению, готов обсудить.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Есть вариантARV писал(а):Если есть идеи по улучшению, готов обсудить.
Спойлер
Код: Выделить всё
uint8_t max_i 25 или сколько там параметр TF передал
uint8_t rang[255];
// Заполняем массив последовательными значениями от 0 до max_i
for ( i = 0; i < max_i; i++)
{
rang[i] = i ;
}
for ( i = 0; i < max_i; i++)
{
// Генерируем случайно два индекса элементов
ind1 = rand() % max_i;
ind2 = rand() % max_i;
// и меняем местами элементы с этими индексами
temp = rang[ind1];
rang[ind1] = rang[ind2];
rang[ind2] = temp;
}А потом последовательно по этому массиву воспроизводим скрипты?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Повесил матричную гирлянду на окно. Красота!
Большое спасибо Авторам устройства и скриптов!
У меня почему то упорно игнорирует первый светодиод, вначале он не горит, а потом на одном из скриптов загорается фиолетовым, так и горит до конца. Думал вышел из строя, поменял, тоже самое. Сильно переживать не стал, добавил 101-й в конец, все отлично.
Всех с наступающим Новым Годом!!!
Большое спасибо Авторам устройства и скриптов!
У меня почему то упорно игнорирует первый светодиод, вначале он не горит, а потом на одном из скриптов загорается фиолетовым, так и горит до конца. Думал вышел из строя, поменял, тоже самое. Сильно переживать не стал, добавил 101-й в конец, все отлично.
Всех с наступающим Новым Годом!!!
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
не правильно подключен транзистор, либо вообще не подключен.dantist3 писал(а):У меня почему то упорно игнорирует первый светодиод
Подскажите, лучше питание развести сверху или снизу? Наверное сверху будет логичнее, т.к. диаметр меньше и с одной точки (небольшого круга) и ветки гирлянды будут независимы, можно их корректировать, смещать по низу и закреплять их. А питающий провод провести вдоль ствола елки.
Подключил к данной матрице (он у меня на разъеме) блок от гирлянды Уважаемого Riniy, который запрограммирован на 60 светодиодов. В эффектах горизонтальные ряды синхронизируются и получаются красивые псевдоматричные эффекты.
Dimon456 Спасибо! Точно исток со стоком перепутал!
Dimon456 Спасибо! Точно исток со стоком перепутал!
[uquote="Dimon456",url="/forum/viewtopic.php?p=3764634#p3764634"]Да.[/uquote]
Сам по себе алгоритм представляется вполне хорошим, но он ограничивает количество скриптов... Я даже не уверен, что памяти хватит на 30... Так что пока торопиться не хочу с переделками.
Добавлено after 3 minutes 5 seconds:
[uquote="Riniy",url="/forum/viewtopic.php?p=3764663#p3764663"]Подскажите, лучше питание развести сверху или снизу? Наверное сверху будет логичнее, т.к. диаметр меньше и с одной точки (небольшого круга) и ветки гирлянды будут независимы, можно их корректировать, смещать по низу и закреплять их. А питающий провод провести вдоль ствола елки.[/uquote]
У меня именно так, причём каждая отдельная ветка на разъёме. Фотка была ранее под спойлером.
Сам по себе алгоритм представляется вполне хорошим, но он ограничивает количество скриптов... Я даже не уверен, что памяти хватит на 30... Так что пока торопиться не хочу с переделками.
Добавлено after 3 minutes 5 seconds:
[uquote="Riniy",url="/forum/viewtopic.php?p=3764663#p3764663"]Подскажите, лучше питание развести сверху или снизу? Наверное сверху будет логичнее, т.к. диаметр меньше и с одной точки (небольшого круга) и ветки гирлянды будут независимы, можно их корректировать, смещать по низу и закреплять их. А питающий провод провести вдоль ствола елки.[/uquote]
У меня именно так, причём каждая отдельная ветка на разъёме. Фотка была ранее под спойлером.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Про разъемы тоже думал, они будут не лишними.
Можно ссылку на фотку, если не затруднит
Можно ссылку на фотку, если не затруднит
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
А как такой вариантARV писал(а):Сам по себе алгоритм представляется вполне хорошим, но он ограничивает количество скриптов... Я даже не уверен, что памяти хватит на 30... Так что пока торопиться не хочу с переделками.
Спойлер
Пишем свой rand()Код: Выделить всё
uint16_t max_i 25 или сколько там параметр TF передал
uint16_t rang[max_i]; // массив только для анализа в протеусе
unsigned long int r = 1;
uint16_t rnd3 (void) {
r = ((r * 7621) + 1) % max_i;
return r;
}
for ( i = 0; i < max_i; i++)
{
rang[i] = rnd3() % max_i;
}


