RSS блога
Подписка
Цветомузыка без ПК
Предлагаю к сборке вариант автономной цветомузыки. Этот вариант цветомузыки, в отличие от варианта цветомузыки на Arduino, не требует для работы персонального компьютера. Всю обработку аудио потока выполняет микроконтроллер STM32F103C8T6.
Переключение музыкальных и динамических программ осуществляется кнопочками или по Bluetooth со смартфона.
Схема цветомузыки:
Для сборки контроллера вам потребуется:
Светодиодная лента
Модуль микроконтроллера
Модуль bluetooth (если требуется управление со смартфона)
Модуль микрофонного усилителя
или буферный усилитель для подключения к линейному выходу (собрал из того что было под рукой)
Можно использовать обе схемы. Вы можете выбрать контакт аналогового(аудио) входа A0 или A1 на модуле STM32 подключением вывода A15 к общему ( G ) выводу или оставив A15 не подключённым. После изменения входа требуется перезагрузка микроконтроллера.
Программа для микроконтроллера STM32 доступна для скачивания c google диска. Выберите прошивку MC_**led.HEX c номером совпадающим с количеством светодиодов в вашей ленте:
30,60,72,90,120,144,150,180,210,216,240
Программирование STM32 выполняется через переходник USB-UART с помощью программы Flash loader demonstrator. В интернете есть несколько описаний процесса программирования STM32. Вы можете выбрать описание которое вам покажется более понятным.
Если позднее у вас изменится количество светодиодов в ленте вы сможете настроить их количество с помощью кнопки подключённой к выводу B8. Нажмите и удерживайте кнопку пока все светодиоды не будут задействованы.
Сохраните режим после установки количества светодиодов в ленте !!!
Сохранение установленного режима производится кнопкой подключённой к выводу B9. Сохранённый режим будет устанавливаться при включении устройства. Для выполнения сохранения нажмите и удерживайте кнопку 3-4 секунды.
Назначение кнопок:
Кнопка(контакт) B9 – Сохранение установленного режима как режима при включении питания;
Кнопка(контакт) B8 – Установка количества активных светодиодов в ленте;
Кнопка(контакт) B7 – Выбор динамической программы;
Кнопка(контакт) B6 – Выбор музыкальной программы;
Кнопка(контакт) B5 – Включение/выключение режима перебора динамических программ;
Кнопка(контакт) B4 – Установка яркости ленты.
Кнопка(контакт) B3 – Установка темпа переключения.
Управление возможно и/или c кнопок или из приложения под Android.
Программа "Цветомузыка" под Android доступна для скачивания на Google Play.
Для подключения к контроллеру с модулем bluetooth просто коснитесь значка
При первом подключении, если устройство не обнаруживается, то выполните сопряжение c модулем в настройках bluetooth телефона!!!
Приятного отдыха.
Видео работы:
Музыкальные программы
Динамические программы
Переключение музыкальных и динамических программ осуществляется кнопочками или по Bluetooth со смартфона.
Схема цветомузыки:
Для сборки контроллера вам потребуется:
Светодиодная лента
Модуль микроконтроллера
Модуль bluetooth (если требуется управление со смартфона)
Модуль микрофонного усилителя
или буферный усилитель для подключения к линейному выходу (собрал из того что было под рукой)
Можно использовать обе схемы. Вы можете выбрать контакт аналогового(аудио) входа A0 или A1 на модуле STM32 подключением вывода A15 к общему ( G ) выводу или оставив A15 не подключённым. После изменения входа требуется перезагрузка микроконтроллера.
Программа для микроконтроллера STM32 доступна для скачивания c google диска. Выберите прошивку MC_**led.HEX c номером совпадающим с количеством светодиодов в вашей ленте:
30,60,72,90,120,144,150,180,210,216,240
Программирование STM32 выполняется через переходник USB-UART с помощью программы Flash loader demonstrator. В интернете есть несколько описаний процесса программирования STM32. Вы можете выбрать описание которое вам покажется более понятным.
Если позднее у вас изменится количество светодиодов в ленте вы сможете настроить их количество с помощью кнопки подключённой к выводу B8. Нажмите и удерживайте кнопку пока все светодиоды не будут задействованы.
Сохраните режим после установки количества светодиодов в ленте !!!
Сохранение установленного режима производится кнопкой подключённой к выводу B9. Сохранённый режим будет устанавливаться при включении устройства. Для выполнения сохранения нажмите и удерживайте кнопку 3-4 секунды.
Назначение кнопок:
Кнопка(контакт) B9 – Сохранение установленного режима как режима при включении питания;
Кнопка(контакт) B8 – Установка количества активных светодиодов в ленте;
Кнопка(контакт) B7 – Выбор динамической программы;
Кнопка(контакт) B6 – Выбор музыкальной программы;
Кнопка(контакт) B5 – Включение/выключение режима перебора динамических программ;
Кнопка(контакт) B4 – Установка яркости ленты.
Кнопка(контакт) B3 – Установка темпа переключения.
Управление возможно и/или c кнопок или из приложения под Android.
Программа "Цветомузыка" под Android доступна для скачивания на Google Play.
Для подключения к контроллеру с модулем bluetooth просто коснитесь значка
При первом подключении, если устройство не обнаруживается, то выполните сопряжение c модулем в настройках bluetooth телефона!!!
Приятного отдыха.
Видео работы:
Музыкальные программы
Динамические программы
Самые обсуждаемые обзоры
+79 |
4323
153
|
+61 |
4468
75
|
www.youtube.com/watch?v=nu31By9Phdc
www.youtube.com/watch?v=sFQip-zjMoY
www.youtube.com/watch?v=5vanh8qdEC8 — итог: отзывы о Гайвере
www.youtube.com/watch?v=DBuPlFtg0Nw
Использую 32-битные вычисления в формате S15.16 (т.е. знак, 15 бит целая часть, 16 — дробная), код требует 8 Кб ОЗУ для вычисления БПФ и 4 Кб ПЗУ (512*4*2) под таблицу корней из единицы (от w^0 до w^511, вторая половина не нужна). За счет применения арифметики 32 бит можно не делить на 2 результат вычисления каждой «бабочки», а поделить один раз на 1024 в конце преобразования. Еще 8 Кб требуется для буфера АЦП (два канала по 2048 сэмплов по 16 бит). В принципе, можно сократить буфер почти в 2 раза (1024 сэмпла на каждый канал + небольшой буфер для АЦП, откуда копировать данные), но пока в 20 Кб ОЗУ укладываюсь.
Написал свой класс CCmplx для работы с комплексными числами, разместил в заголовке (это важно, чтобы компилятор мог инлайнить), в нем ничего особенного — простая арифметика, но так код выглядит красивей. Также следует отметить, что IAR прекрасно соптимизировал умножение двух 32-разрядных чисел, приведенных к 64-битному типу в одну команду SMULL.
Пробовал на РС реализовывать Фурье с 16-разрядной арифметикой — с делением на два на каждом этапе получается более-менее приемлемая точность, но явно хуже, чем 32 бита. Скорость на СТМ такого алгоритма не смотрел, т.к. 32-битный выполняется вполне быстро.
библиотека stm_fft целиком на ASM (скорость на порядок быстрее), уже давно лежит в комплекте ARDUINO у Roger Clark.
Кому итог важнее — прямая ссылка
github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/stm_fft
PS. У автора этого проекта две проблемы — 1. схема аудио входа заметно усложнена. Видел несколько вариантов, везде гораздо проще! 2. Отсутствие исходников прошивки, хотя автор использует чужой код который подразумевает публикацию исходников!
Там на ASM не используются дробные числа (иначе таких сложностей и заморочек я не понимаю) — все в целых. Думаю, что даже два порядка можно выиграть по сравнению с компилятором, который подставляет подпрограммы вычисления вещественных чисел. Тем более по сравнению с кодом, который опубликован выше.
Так бы и написали — библиотека с целочисленным БПФ (скорость на порядок быстрее), тогда бы и вопросов не было :)
Глядите код FFT, кто хочет разрабатывать гирлянды. Мне вот пока некогда удивлять разработками, а окно с гирляндой на НГ требует звания «самого красивого и неповторимого» в доме.
Так что ждем разработок с открытым кодом! Кстати, в VK автор честно говорил, что надергал эффектов из файла эффектов, собранного А. Гайвером, который ему там выложили.
И даже в этом случае заявления о «скорость на порядок быстрее» — совершенно голословно и не обосновано. Такую разницу можно получить только если в компиляторе отключить всякую оптимизацию, а в ассемблере тщательно вылизать код до последнего байта.
Вот эти видео: www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#cylon
Посмотрите внимательнее, там используются целые числа, представляющие дробные с помощью фиксированного масштаба. Поэтому «тем более» в данном случае абсолютно неприменимо.
Вышеприведенный код (совместно с вычислением 511-ти абсолютных величин результата) занимает треть процессорного времени на 72 МГц стм32 при независимой обработке двух каналов с частотой дискретизации 32 КГц. Для моей задачи нет смысла пытаться делать быстрее.
Хотя пути для оптимизации есть:
1. Использование Radix-4 FFT вместо Radix-2. Позволяет выполнять на 20 или 25% (не помню точно) меньше умножений. Минус — алгоритм сложнее.
2. Использования 16-битной арифметики, чтобы результат умножения умещался в 32-битный регистр. Позволит использовать более быстрые команды умножения и упростит последующий сдвиг (хотя IAR оказался весьма хорош и для 32-битного варианта). Минус — падает точность, плюс надо делить результат умножения каждой бабочки на 2, это дополнительные команды сдвига.
В итоге, думаю, качественный код на асме для Radix-4 FFT будет раза в полтора быстрее того, что опубликован выше. Бесспорно, иногда это необходимо, но для моей задачи не надо точно. Если захотите сравнить, у меня вычисление блока FFT длиной 1024 сэмпла совместно с оконной функцией занимает около 5 мс. Сами ST заявляют около 3 мс для этого же МК, вот как раз и есть 1.5 раза.
И да, не надо недооценивать компиляторы — тот же IAR обеспечивает очень хорошую оптимизацию выходного кода.
С тех пор, я думаю, компиляторы не стали хуже :)
а вот когда ASM код продумано использует команды и возможность доступа к данным через режимы адресации процессора, двойной выигрыш запросто.
Я начинал программирование как на Z-80, так и на x86 именно с ассемблера. На Z-80 не было альтернатив, на х86 на асме иногда и сейчас пишу код, который обгоняет компилятор студии в два раза (но компилятор у студии в этом плане так себе, надо сказать, да и бывают алгоритмы, которые упираются в производительность памяти, поэтому тут хоть оптимизируй, хоть нет, скорость не растет). Также пишу для AVR исключительно на асме. Поэтому первым делом, когда начал изучать стм32, я ознакомился с его системой команд. И лично осознал ранее неоднократно виденный посыл — писать на асме под RISC — дело неблагодарное. Но тем не менее, я всегда смотрю, что генерит мне IAR в интересных местах. И, надо сказать, результат приятно удивляет.
Вы, наверное, не смотрели листинги после компилятора, иначе бы знали, что компиляторы очень продуманно используют и код и даже многие трюки для ускорения или облегчения программы :)
1. Заполнение массива SINусом,
2. 100000 раз вычисление FFT вашей чудо функцией
3. 100000 раз вычислением функцией из библиотеки
4. Ну и разницу в часах :) времени работы.
а так рассказывать сказки и я могу.
1. Моя функция вычисляет FFT совместно с оконной функцией (если не знаете, что это, то она требует еще 1024 умножения) за примерно 5 мс. Точных значений не запоминал, т.к. мне достаточно такого порядка точности.
2. Исходные данные на время выполнения не влияют. Можно заполнить массив нулями, можно — данными с АЦП, результат одинаковый, погрешность — десятки тактов (на частоте 72 МГц).
3. Библиотека по вашей ссылке от ST (вы сами-то хоть открывали исходник?). Результат работы библиотеки от ST без вычисления оконной функции на данном МК я приводил ранее — 3 мс.
4. Итого, моя функция + 1024 умножения = 5 мс. Функция от ST = 3 мс. Разница около полутора раз (3*1.5 = 4.5, что весьма близко, если убрать 1024 умножения).
5. Обратите внимание на разрядность — ST использует 16-битную арифметику, я — 32.
6. ST оптимизировали первый проход, где по факту умножений делать не надо (там умножения всегда на 1), я этого не делал (делаю умножения на 1).
Вывод: основной прирост за счет разных алгоритмов, а не за счет ручного написания на асме.
Про Z80 я пассаж оценил :) я там пару игр написал на чистом ASM. А знаете, я еще на КР580ВМ80А писал копировщик, который на вход принимал данные с магнитофона, и тут же этот бит выдавал на выход. Так мы «защищенные» от копирования игры на БК-0010, полученные на кассетах из ногинск-7 копировали :)
Тестируйте. Ниже сгенерированный IAR'ом код. Необходимы только две таблицы — оконная функция (1024 32-битный числа, все могут быть 65536, вам она не нужна) и таблица корней из единицы (512 корней, каждый состоит из двух 32-битных чисел, значения в интервале от -65536 до 65536, первый — {65536, 0}, второй — {65534, 402} и т.д., чтобы было понятно). В принципе, если скорость не зависит от исходных данных, скорее всего и от корней зависеть не будет, можно взять любые данные, может можно от ST адаптировать.
У меня есть работающий макет, выводящий данные на дисплей 40х8 точек, время выполнения замерял как программно, так и осциллографом.
Можете начать с замера скорости работы вашей библиотеки.
Позже, глючный компаратор 554CA3 на входе с мафона меняли, кстати, на 564ЛН2. Работало надежнее.
1. «У меня ВСЕ есть. Все работает круто. Там… Где-то… внутри… может», Я вообще гений, пока, впрочем, непризнанный" — я оцениваю такой расклад в 0%.
2. ASM код от ST как и было изначально мной оценено НА ПОРЯДОК уделывает Ваши студенческие изыски в этом направлении — я оцениваю такой расклад в 100%. И я понимаю, что потратить кучу нервов и сил, вникая в алгоритмы FFT (Вы ведь вникали, а не содрали код, изменили названия переменных) и тут первой же ссылкой тебя, крутого программера, с облаков опускают на грешную землю.
PS. Простите, я и так много тут написал, но я такое уже видел BolgenOS :):):):):):):):):)
Вам был предоставлен кусок кода. Вы провели тестирование? Где результаты? Конкретные числа. Я свои предоставил.
Похоже, вы забыли принять лекарства. Мой алгоритм работает ровно так, как надо мне, за время, которое меня полностью устраивает, даже, в принципе, быстрее. И я очень рад, что потратил время и разобрался в преобразовании Фурье лично, а не содрал алгоритм — это одно из фундаментальных преобразований, используемых в математике и вычислительной технике, считаю его понимание важным.
На этом предлагаю вам остановить поток сознания и вернуться к вашим гирляндам и красивым окнам, ибо беспредметных разговоров вести желания не имею.
Микрофонный усилитель используется готовый и подключается 3 проводниками. Проще некуда.
Я этот код видел под GNU GPL. И даже на автора могу ссылку дать.
Спорим, что Вы порт для выдачи данных с А7 на соседний порт (A5 например) не сможете перенести? — у Вас вся логика программы слетит :). SPI DMA там ведь не прокатит.
PS. В этом проекте Вашего труда чуть (аналоговая схема — да, такого я не встречал, но излишне сложна, считаю бесполезна. Другие делают проще. Плата микрофона, случайно, такая же как у Алекса Гайвера. Код для захвата (оцифровки) AUDIO — думаю, что код заимствован GNU GPL, FFT — не свое от STM, WS2812b DMA SPI — тоже GNU GPL). Если бы так же меркантильно думал Roger Clark, с надеждой продавать STM32 arduino, то Вы бы с помощью delay() делали бы задержки :) Но нет, там огромный труд, позволяющий легко и просто работать со сложным ARM железом в привычной среде. И все открыто и, более того, автор еще и активно все это развивает на общественных началах.
Вот эти видео: www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#cylon
У меня есть открытый проект на Github.
Этот проект сборка указанного проекта в одну STM32. Смотрите.
Если вам принципиален открытый проект возьмите его и переложите на любой процессор сами.
Информация по лицензии DSP LIB
В вашей программе для STM32 основная фишка — использование DMA и SPI интерфейса для выдачи данных на ленту в фоновом режиме. Этот код в коммерческих проектах Вы не можете использовать и обязаны публиковать любые разработки, в которых данный код заимствуется. Связываться с закрытым кодом не хочу.
Главное чтобы проектов было больше и у каждого был выбор.
Я ссылку на тестирование FFT дал (ее тут стерли) www.stm32duino.com/viewtopic.php?t=1145 — вот есть тестовый пример, что мешает тому, кто жалобы строчит, по аналогичной общепринятой методике свой «великий код» протестировать? Заодно и правильность результатов проверить?
А по поводу, AndyBig, Ваших разработок — toster.ru/q/374189
Тогда давайте ссылку на конкретный пост с тестированием, где вычисление FFT для массива на 1024 значения занимает меньше 0.5 миллисекунды. Мне не улыбается лопатить все страницы темы по ссылке.
Вы не ответили на вопрос. Или это Ваш вопрос по ссылке и Вам 17 лет? Тогда это многое объясняет.
(Я сразу говорил, что полностью согласен с этим мнением: After testing various C FFT routines, including FHT, real-FFT, CMSIS libraries, and finding them all to be too slow to run real-time 38khz audio FFTs with a size of 1024 on the STM32F103C,I finally figured out how to make the Arduino environment accept assembly functions.)
Вы, видимо, не понимаете английский (тогда что Вам в этой профессии делать ?). По приведенной ссылке
www.stm32duino.com/viewtopic.php?f=3&t=1145
в первом же посте все есть — сама FFT библиотека + header, а так же проект, который ее тестирует — cr4_fft_1024_stm32.s + cr4_fft_1024_stm32.h + arduino sketch). Скетч, выводит результат преобразования на экранчик ILI9341 только что бы любой желающий смог визуально оценить результаты вычисления FFT). Тестирование идет именно по описанной мой методике — формируется «синус» определенной частотой во входном буфере и рассчитывается выходной. Еще результат на экран выводится, что уже не так важно.
Лицензия требует предоставления исходного кода продукта, основанного на коде GPL («В общем случае распространитель программы, полученной на условиях GPL, либо программы, основанной на таковой, обязан предоставить получателю возможность получить соответствующий исходный код» )? — заметьте, кусочек GNU GPL кода Вы включили, а выложить должны весь проект — в этом и суть свободного ПО, каждый вносит посильный вклад, а польза всем :)
И там же указано время выполнения — 2 мс, что никак не на порядок быстрее 5 мс. К тому же отличие в разрядности вычислений существенное.
Я вроде задал простой вопрос, а Вы уже второй пост рассказываете мне что такое GNU GPL.
Ардуина, также, как и STM — вполне автономный микроконтроллер. Ардуина не хуже и не лучше STM умеет управлять лентой WS2812.
Или имеется в виду, что у вас STM запрограммировался сам по себе, без наличия ПК, исключительно силой мысли?
Словом, странный тезис, не имеющий под собой никакого смысла.
Ну и DTMF вроде другим, более эффективным алгоритмом обрабатывались :)
И исходники на тот проект выложены. И для Arduino и для ПК.
1. Мало быстродействия (ну тут еще вопрос, может один канал 32 КГц и реально, если все оптимизировать).
2. Мало ОЗУ
Видел на ютубе проект БПФ на AVR длиной 128 сэмплов, но для полноценного спектра звука надо 1024.
alexgyver.ru/colormusic/
Сделал себе один в один — красотища!!!
На тех дискотеках, где бывал юношей в 70-х — 80-х, как-то совершенно не отложилась в памяти особая прелесть попадания цвета в такт музыке.
То-ли потому, что преимущественно уже хорошо под газом туда попадал, то-ли кроме девчонок ничего там не интересовало, а может и вовсе дискотечная попса того времени просто абсолютно в душе не резонировала...)
Не нужно сразу набрасываться, человек все таки старался…
Кнопки не паял. Пользуюсь приложением.
Эх…
К чему я.
Люди, кто-нибудь, дайте рабочий алгоритм выявления BPM или хотя бы сильных долей музыки на микроконтроллере, а?
То, что любой пятилетний ребёнок делает без труда на утреннике, притопывая в такт музыке, на микроконтроллерах в реалтайме, насколько я могу судить, до сих пор ещё не реализовано…
НЧ составляющая в фонограмме присутствует и от других инструментов, поэтому ритм из нижних частот выделять — это утопия.
Бóльшая часть роковых композиций, к примеру, во вступлении вообще не имеет бочки или барабанов. Например, только одни гитарные рифы. Или только хет и тарелки. Или только гитарный перебор. Однако уже со вступления песни мы легко можем начать притопывать ногой или прихлопывать рукой в такт музыке. Безо всяких НЧ-составляющих.
Я ж говорю не об искусственном интеллекте для сочинения музыкальных партитур. Творчество — да, продукт исключительно интеллекта.
Но я-то всего лишь о выделении такта из ритмичной музыки, это куда более простая вычислительная задача, причём на PC реализованная во множестве исполнений :)
до потопа не было зимы и весь календарный период назывался летом
а педевикия твоя врет, там не сотворение мира как человечества, а мир в плане перемирия после войны с китайцами
мир имеет 5 значений и раньше записывался через 5 разных букв и, пока в 17м году не провели реформу и не выкинули лишние 3 штуки
б. автокорреляционная функция над огибающими — получили ритм
Как видите, никакой привязке к частотам. ))… и ритм может восстанавливать.
Можно и аппаратно, если лениво писать довольно простой код — 564ГГ1 по огибающей (выпрямленному). Но придется подавлять «ритм» в отсутствии музыки.
Вот именно, как раз, с АКФ и проблема. Знаний матухи не хватает. И про Хинчина с Колмогоровым я почти ничего не знаю :)
Вы сумеете изобразить это в действующем скетчике?
Сдвиг на 0 — полное совпадение. Сдвиг на 1 { F(1) } — получили меньше, еще… и т.д.
Вначале результат будет уменьшаться, затем повышаться, потом снова уменьшаться и снова подниматься. Так вот — самый первый горб (кроме 0) — это и есть период повтора функции (ритм). А его высота — мера интенсивности этого ритма. Ничего сложного.
По похожему алгоритму работал русский АОН, а там ой-ой какой гадкий и шумный сигнал.
Так что — почаще оцифровывайте, будет четче результат. И на ARMе конечно.
2. Даже если его выделить, сложнее решить что с этим ритмом делать. Что зажигать и на сколько, и что делать с остальной информацией. И главный вопрос будет ли это красиво на большинстве музыкальных композиции.
Я в проекте с проекте с Ардуинкой приглашал писать свои варианты обработки. Никто не откликнулся.
Кому нужны исходники может посмотреть проект на Arduino + FFT для STM на диске вместе с прошивками. Я по просьбе своих коллег положил два проекта в одну STM и добавил управление со смартфона.
Памяти хватит, просто возьмите не_AVR и ограничте частоту сверху — ритм на 10кГц не возможен (т.к. издевательство над человеком).
Из того, что делал — определение сигнала «занято» — вводными были диапазон тона 300-1500Гц (вместо халявных 425) и ритм занято а-бы-какой с непонятной скважностью и стабильностью параметров. И это на фоне разговора. Оно работало.
/disconnect
попробовал представить себе, как можно притоптывать в такт гитаре или саксофону
подкинь что ли примеров
Я сам, собравший не одну ЦМП разной сложности, и, как и большинство радиолюбителей той поры, прочитывающий «Радио», могу сказать, что те «аналоговые» и «тёплые» тоже не были панацеей. Прежде всего, потому, что утомляли зрителя довольно быстро. Именно поэтому тот же «Радио» не гнушался публикациями цветомузыкальных оргáнов и цветомузыкальных клавиатур — все понимали, что в световом сопровождении музыки альтернативы человеку пока нет.
Я сам в конце восьмидесятых ушёл от голого аналога в ЦМУ к дискретным элементам: генератор на логических элементах+счётчик+ПЗУ и выход на тиристоры. Даже такая конструкция в визуальном смысле тогда смотрелась куда выигрышнее, чем голый аналог после трёх-четырёх фильтров, поскольку в ПЗУ вшивались уже всякие «бегущие огни», «рассыпания», мигания и прочее.
Сегодняшние светодиодные технологии — да, позволяют ещё более разнообразить цветовую картину: ведь тогда, со всеми светофильтрами, цапонами и пастой от шариковых ручек, мы даже близко не могли достичь такой цветовой палитры. Так что зря вы так уж сильно ностальгируете по «тёплому аналоговому», WS2812 куда более вариативна и выразительна, чем N-канальные ЦМУ с лампами накаливания. Но проблема осталась там же и практически не сдвинулась за все эти годы — полностью автоматизировать процесс светового визуального сопровождения музыки всё равно удачно не получается. На любой концертной площадке работает DMX-светотехника, которую программируют люди.
Я, вероятно, в авангарде этих самых утомляемых зрителей до сих пор)
Ещё до расцвета диктуемой журналом «Радио» моды на ЦУ, собирал в старших классах тиристорную.
Однако балдеть под мигающие в такт музыке три цветные лампочки дома почему-то ни разу не довелось) Как-то наоборот, своей искусственной примитивностью убивали тогда весь кайф от прослушивания излюбленного арт-рока)
лохотрон, гомеопатия, астрология, телекинез, левитация!)))Встречный вопрос.
Вытекающий из контекста комментариев к этому обзору.
Мои реплики:
— вот это всё, в общем и целом, не натолкнуло вас на мысль, что я «немножечко в теме»?
Т.е. написав свою реплику, вы всерьёз полагали, что про существование фонового канала в ЦМУ я вот за эти несколько десятилетий ни разу не слышал?
И только вы сейчас, в конце второго десятилетия 21-го века, мне вдруг открыли эти сокровенные знания? :)
Ну, спасибо, чо :)
я когда был тупым школьником, то тоже делал на тиристорах
спасли только стеклянные колпаки от промышленной сду (походу это были колпаки как на ментовских мигалках) + снег на подоконнике, который служил рассеивающим экраном
с улицы нереально круто смотрелось, цвета сочнейшие, светодиоды не тянут такой динамический диапазон по цвету, хоть тоже он и насыщен
Чтобы mqtt понимало через esp-шку или по блутусу интерфейс какой-нить?
Буфер желающие могут подобрать сами из имеющегося в наличии хлама. В китайском контроллере SP105E (на STM32) в качестве буфера стоит 74HC245. Этот буфер по входу точно такой же как и WS2812B — 4.5*0.7=4.15
Меньше не больше и мы не калибры собираем.
Вроде дешевле уже некуда.
И+, и спасибо, и молодец!
Пока делаю доработки по просьбам пользователей.
В планах сделать поинтересней последние 4 программы.
Прошу прощения в описании перепутал B8 и B9.
B9 — замкните на G для изменения количества светодиодов и удерживайте до выполнения изменения.
B8 — замкните на G для сохранения установленного режима.
или чуть подождите исправлю прошивку под описание и добавлю прошивки на разное количество светодиодов.
Вечером обновлю программу под Android.
Меня попросили кое что добавить и я временно удалил прошивки.
Видео изменения количества светодиодов положил в папку с прошивками.
Нажимаете и держите кнопку — яркость увеличивается. Для уменьшения отпустите кнопку и снова нажмите и держите — яркость уменьшается. Каждый раз при отпускании кнопки меняется направление изменения.
Шаг изменения количества светодиодов (кнопка на контакте B8): 30,60,72,90,120,144,150,180,210,216,240,300.
Эффекты добавлю. (Только ремонт в детской доделаю). Пока предлагайте варианты, лучше на сайте цветомузыка.
Сайт размещён на сервере у меня дома и не всегда включён (по ночам выключаю).
Если есть желание могу сделать группу в Facebook.
Это отвечает контроллер таким образом связь есть.
На все команды так отвечает?
В терминалке после команды поставьте коды $0D$0A (возврата и перевода строки). AT+H$0D$0A.
Как на картинке.
Последние четыре музыкальные программы доработаю. Написал их на скорую руку (что бы были задействованы все кнопки), к новому году переделаю.
Может что то надо на STM32 переключить?
AT,H-английские символы?
!!!!!Все символы вводить только на Английском.!!!
С работы приду, сниму видео.
В файле «readme» все команды «АТ», или еще что нибудь можно менять?
Еще бы добавить «Плавность» регулируемую, как в музыкальные так и в динамические.
2. В динамической есть темп. Или вы что то другое имеете ввиду?
Добавил на google диск тестовую прошивку MCmic.HEX — в данной прошивке при работе в динамическом режиме реализована функция включения/выключения ленты по хлопку.
Данная функция работает(должна работать) при не очень высоком уровне шума в помещении.
Прошивка тестовая и лента может не всегда корректно включаться и выключаться.
Жду откликов на корректность работы данной функции.
vk.com/club171670176
Удобнее вопросы задавать.
Добавляйте динамические программы в список воспроизведения из терминалки или с помощью новой кнопочки ADD в приложении (начиная с версии 1.5 от 03.10.18). В терминалке можно просмотреть список, добавить в конец списка или в конкретную позицию, удалить из списка. Перед выключением питания не забудьте сохранить список, команда AT+W в терминалке или кнопочка SAVE в приложении, иначе изменения будут потеряны.
При нажатии кнопки ADD в конец списка добавляется текущая динамическая программа.
Так вы сможете выбрать для воспроизведения именно те программы которые вам нравятся и в том порядке в котором вы их вводите.
Список может содержать до 256 программ.
Можно вводить так (всегда меняем одну цифру)
AT+A0,0$0D$0A enter
AT+A1,0$0D$0A enter
AT+A2,0$0D$0A enter
AT+A3,0$0D$0A enter
…
AT+A20,0$0D$0A enter
AT+A0,1$0D$0A enter
AT+A1,1$0D$0A enter
AT+A2,1$0D$0A enter
если вводить в таком порядке то будут чередоваться именно программы, так как вторая цифра(0..7) изменяет цветовое решение программы.
Порядок удаления программы
Если вам не нравится какая либо программа, установите её c помощью «крутилок», запомните её двузначный номер например: 19,4
Выведите список программ командой
AT+P$0D$0A
0,0,1
1,1,1
2,8,3
3,3,2
4,11,1
5,19,4 — программа которую мы хотим удалить 19,4 пятая (5) в списке
6,…
…
AT+D5$0D$0A удалится 5 программа из списка
Из программы под android добавить в список очень просто, «крутилками» устанавливаем программу и нажимаем кнопочку ADD. Программа добавится в конц списка воспроизведения.
Список может включать до 256 программ.
!!!
Добавил на google диск тестовую прошивку MCmic.HEX — в данной прошивке при работе в динамическом режиме реализована функция включения/выключения ленты по хлопку.
Данная функция работает(должна работать) при не очень высоком уровне шума в помещении.
Прошивка тестовая и лента может не всегда корректно включаться и выключаться.
Жду откликов на корректность работы данной функции.
vk.com/club171670176
Удобнее вопросы задавать.
p.s. да можно поднять документацию и написать самому, но это займет больше времени, а его не так уж много.
С Новым Годом.
Где можно почитать: какая кнопка ( B3...B9 ), что делает?
Возможно что либо изменено?
Ясно.
С Рождеством !!!
Хочу спросить, которая прошивка считаетса самая актуальная?
Я сначала нашёл ресурс «Music-LEDs», а потом google drive link сдесь, вот теперь не уверен :)
Спасибо заранее за информацию.
В прошивке: Добавлены цветомузыкальные ШИМ каналы на портах B6(НЧ), B7, B8, B9, B10(ВЧ) и B11 — фоновый.
Изменено назначение кнопок:
B1 — btnStore — Сохранить текущую конфигурацию как конф. по умолчанию
B3 — btnSpeed — ± темп
B4 — btmBrigth — ± яркость
B5 — btnPlay — запустить список воспроизведения
B12 — btnADD — добавить программу в список воспроизведения
B13 — btnMusical — ± музыкальные программы
B14 — btnDinamical — ± динамические программы
B15 — btnLED — изменить число светодиодов в ленте
Продуманность данной «MusicLEDs» на высоком уровне: выбор числа светодиодов, выбор числа частотных каналов (! нигде не встречал такое у других), различые варианты разделений и симметрий, установка плавности реакции, регулировка яркости, ну и конечно — Bluetooth управление с Android, да и ещё PC сервисная программа. Конечно, так же автоматические эффекты. Да, и последняя прошивка даёт ещё 5 частотных каналов PWM выход. Очень, очень богато! Основательмпе Большое Спасибо Автору!!! :-)
Конечно, есть некоторые пожелания (на пример, возможность количества LED 64 и 256, но не уверен, будет ли Автор ещё изменять/улучшать? :) Надеюсь… :-)
Неплохо бы всё это (и больше?) на ESP32, там железо для связи всё уже на борту…
Ещё раз — Спасибо! :-)
P.S.: если у кого есть хорошие наводки на другие удачные свето-цвето-музыкальные конструкции (кроме Лумазоидов и AlexGyver), пожалуйста, поделитесь! :)