ARDUINO Цветомузыка на Arduino. Обсуждение проекта

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
Здесь не чат. Сообщения можно редактировать
@Slenk,
при том что "Где-нибудь" в программировании не используется. это точная наука. в примерах FireFX-master четко указанно что где.
видео вижу. а остальные режимы? и как переключается это все. и как цветомузыка работает?
я уже смотрю как дописать пару эффектов. будет на кнопке 0. и далее добавлю # подрежимы. но останется и весь функционал, тот что был. главное чтобы места хватило в нано.

Не знаю как оно у Вас заработало, но - нужно весь скетч переводить на microLED ибо эта библиотека "конфликтует" с FastLED . вместе это не перемешивается никак. либо огненные эффекты переводить на FastLED. Если не трудно - скетч в студию весь.
https://alexgyver.ru/microled/#27009886d44bb24ce есть на эту тему мануал. Алекс как бы рекомендует так сделать. много плюсов. Может Вы уже все сделали? переделки я вижу эффектов. но я пойду другим путём. я перепишу все под microLED.

Увы. под microLED переписать весь скетч... это надо быть гением! :) пойду Вашим путём. перепишу под FastLED. стандартизируемся. но все же плохо. microLED намного интереснее. но там переписать все - титанический труд. может кто подскажет и поможет перевести. часть я разобрал. но часть - я не нашёл аналогов в обеих библиотеках. например заливка градиентом. CRGBPalette32 myPal = soundlevel_gp; и соответственно leds = ColorFromPalette(myPal, (count * index)); // заливка по палитре " от зелёного к красному"
Готово. осталось проверить. но сюда больше уже ничего не влезет...
 

Вложения

  • Лойс +1
Реакции: Aleksandr1612

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар
@technotrasher,
Программирование это не наука и уж тем более не точная. Это скорее творчество, ограниченное некоторыми правилами и рекомендациями.
а остальные режимы? и как переключается это все. и как цветомузыка работает?
я уже смотрю как дописать пару эффектов. будет на кнопке 0.
Не знаю как оно у Вас заработало, но - нужно весь скетч переводить на microLED ибо эта библиотека "конфликтует" с FastLED .
Не знаю, что Вы там дописываете, но я Вам вчера скинул весьма подробную инструкцию - как добавить два эффекта конкретно в Ваш код)) Всё уже было переведено на другую библиотеку. И благодаря тому, что это Ваш код, то остальные режимы там же где и были, переключается так же как и переключалось и работает цветомузыка))
Скетч я специально не скидывал, что бы не плодить кучу веток разработки, ибо у меня Ваш скетч уже весьма сильно переписан под себя в том числе и под аппаратную часть.
Влезет туда еще довольно много, у меня свободно 10% памяти, это при том, что еще ничего не оптимизировал, а пока лишь пилю функционал под себя.
Если когда-нибудь закончу, скину своё виденье этого проекта. Аппаратную и программную часть. А Вам огромное спасибо за проделанную ранее работу и предоставление её в общий доступ, Ваши наработки очень помогли!
 
  • Лойс +1
Реакции: technotrasher

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар
@technotrasher, а не могли бы Вы рассказать, что именно в ней хорошего и зачем нужно переводить на неё весь проект?
Пока я честно говоря не понимаю для чего. Но мне интересно Ваше мнение.
 

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар
@technotrasher, у Вас тут что-то не то:

C++:
        for (byte i = 0Ё; i < 100; i ++) {                                 // делаем 100 измерений для частоты 50 ГЦ
          if (line_mode == true) {ё
            RcurrentLevel = analogRead(SOUND_R_MIC); //с правого микрофонного
          } else {
            RcurrentLevel = analogRead(SOUND_R_LINE); //с правого линейного
          }
          LcurrentLevel = analogRead(SOUND_L_LINE);   // и левого каналов

          if (RsoundLevel < RcurrentLevel) RsoundLevel = RcurrentLevel;   // ищем максимальное
          if (RsoundLevel_min > RcurrentLevel) RsoundLevel_min = RcurrentLevel ; //минимальные
          if (LsoundLevel < LcurrentLevel) LsoundLevel = LcurrentLevel;   // ищем максимальное
          if (LsoundLevel_min > LcurrentLevel) LsoundLevel_min = LcurrentLevel ; //минимальная
        }

        // амплитуда
        RsoundLevel = RsoundLevel - RsoundLevel_min ;
        LsoundLevel = LsoundLevel - LsoundLevel_min ;
При таком раскладе микрофон работает только если в него орать. Иначе просто игнорирует звук. И удивляет как Вы этого добились))) А именно:
включаю на телефоне музыку, подношу к микрофону - работает в диапазоне ~0см.-50см., отдаляю на ~55см. - полностью перестаёт работать. Два часа пытался выяснить в чем косяк, закоментил "амплитуду" и всё заработало как надо. Отсюда вопрос: "Что Вы хотели показать этим "саундлевел_мин"?
И да, разговор о первых двух режимах.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
@Старик Похабыч,
к сожалению не элементарный.
для микролед я не знаю как реализовать вот это CRGBPalette32. и так далее. думаю есть аналоги на микролед. то есть - есть моменты которые на микролед я не знаю как реализовать. попробуйте сами. :) реально на 6 прописанных шагов - 5 минут. но... скетч не компилируется. нужно менять ещё много всего. искать им аналоги. если можете - помогите.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
@technotrasher, у Вас тут что-то не то:

C++:
        for (byte i = 0Ё; i < 100; i ++) {                                 // делаем 100 измерений для частоты 50 ГЦ
          if (line_mode == true) {ё
            RcurrentLevel = analogRead(SOUND_R_MIC); //с правого микрофонного
          } else {
            RcurrentLevel = analogRead(SOUND_R_LINE); //с правого линейного
          }
          LcurrentLevel = analogRead(SOUND_L_LINE);   // и левого каналов

          if (RsoundLevel < RcurrentLevel) RsoundLevel = RcurrentLevel;   // ищем максимальное
          if (RsoundLevel_min > RcurrentLevel) RsoundLevel_min = RcurrentLevel ; //минимальные
          if (LsoundLevel < LcurrentLevel) LsoundLevel = LcurrentLevel;   // ищем максимальное
          if (LsoundLevel_min > LcurrentLevel) LsoundLevel_min = LcurrentLevel ; //минимальная
        }

        // амплитуда
        RsoundLevel = RsoundLevel - RsoundLevel_min ;
        LsoundLevel = LsoundLevel - LsoundLevel_min ;
При таком раскладе микрофон работает только если в него орать. Иначе просто игнорирует звук. И удивляет как Вы этого добились))) А именно:
включаю на телефоне музыку, подношу к микрофону - работает в диапазоне ~0см.-50см., отдаляю на ~55см. - полностью перестаёт работать. Два часа пытался выяснить в чем косяк, закоментил "амплитуду" и всё заработало как надо. Отсюда вопрос: "Что Вы хотели показать этим "саундлевел_мин"?
И да, разговор о первых двух режимах.
данный момент подсмотрел у mikuz. расписал на бумаге алгоритм работы. он работает. чувствительности вполне хватает при работе аудиосистемы на 30% громкости. но не орать туда так точно. а от шепота срабатывание мне и не нужно было. иначе "захлебывается" на громкости. переделайте как Вам нужно. из юмора - от крепкого ааапчхи в комнате - цветомузыка срабатывает. :))))))))
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
стоп. на телефоне??? музыку???? ааааа... так простите... я вообще ЦМУ делал для работы на дискотеке! Моя аккустика - переделки колонок от пионера - 5шт, две АС Кливер и усилитель пионер. когда я это включаю на 30% громкости микрофон отлично работает. :)))) и даже не громко все. соседям не мешаю. в машине так же. саб и 6 АС от Alpine.
 

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар

@technotrasher,
Я был уже на гране, но все же сдержался)) письками мериться не буду)) просто скажу, что у меня эта подсветка расположена не там где у меня громко, а там где у меня лаундж зона) к колонкам подключена проводами, а микрофон там просто что бы был и мог реагировать на тихие звуки - голос и телефон.
Но спасибо за пояснение, возможно этот финт пригодится мне в других обстоятельствах)
 

OlegAnadyr

★★✩✩✩✩✩
30 Ноя 2018
8
51
OlegAnadyr! По этой теме будет прошивка?
...Готового проекта пока нет ... (пока все паяю, переделываю), а вот идею я вам дал.

А для "затравки" по объему освободившейся памяти:

#define MODE_AMOUNT 37 // количество режимов
void CMU_MODE_random() {
switch (CMU_MODE_random_rnd) {
case 0: CMU3new(); break;
case 1: CMU3new1(); break;
case 2: CMU3new2(); break;
case 3: CMU3(0, 0); break;
case 4: CMU3(1, 0); break;
case 5: CMU3(2, 0); break;
case 6: CMU3(0, 1); break;
case 7: CMU3(1, 1); break;
case 8: CMU3(2, 1); break;
case 9: CMU4new(); break;
case 10: CMU4new1(); break;
case 11: CMU4new2(); break;
case 12: CMU4(0, 0); break;
case 13: CMU4(1, 0); break;
case 14: CMU4(2, 0); break;
case 15: CMU4(0, 1); break;
case 16: CMU4(1, 1); break;
case 17: CMU4(2, 1); break;
case 18: VUleft(); break;
case 19: VUright(); break;
case 20: VUcentre(); break;
case 21: CMU7(0); break;
case 22: CMU7(1); break;
case 23: CMU7(2); break;
case 24: fireflies3(0); break;
case 25: fireflies4(0); break;
case 26: fireflies7(0); break;
case 27: fireflies_line3(0); break;
case 28: fireflies_line4(0); break;
case 29: fireflies_line7(0); break;
case 30: fireflies_line3new(0); break;
case 31: fireflies3(1); break;
case 32: fireflies4(1); break;
case 33: fireflies7(1); break;
case 34: fireflies_line3(1); break;
case 35: fireflies_line4(1); break;
case 36: fireflies_line7(1); break;
case 37: fireflies_line3new(1); break;

и

#define effect_AMOUNT 18 // количество световых эффектов
void effect_proc (byte effect) {
switch (effect) {
case 0: Fire(55, 120); break; // огонь из центра (не мое)
case 1: random_color_pop(1, 7, 255); break; // светлячки
case 2: new_rainbow_loop(); break; // Крутая плавная вращающаяся радуга (не мое)
case 3: random_color_pop(1, 255, 200); break; // светлячки
case 4: random_color_pop(7, 255, 20); break; // светлячки
case 5: rainbow_fade(); break; // Плавная смена цвета всей ленты (не мое)
case 6: breath_rnd(20); break; // "дыхание" случайным цветом
case 7: meteorite(2, 35, 15); break; // "метеориты" друг за другом (1 байт - 0-r, 1-g, 2-b; 2 байт - затухание (1-255); 3 байт - период (2-50))
case 8: meteoriteRGB(25, 20); break; // "метеориты RGB" друг за другом (1 байт - затухание (1-255); 2 байт - период (2-50))
case 9: meteoriteRGB(7, NUM_LEDS); break; // "метеориты RGB" друг за другом (1 байт - затухание (1-255); 2 байт - период (2-50))
case 10: meteoriteRandom(10, 25); break; // "метеориты random" друг за другом (1 байт - затухание (1-255); 2 байт - период (2-50))
case 11: meteoriteRandom(5, NUM_LEDS); break; // "метеориты random" друг за другом (1 байт - затухание (1-255); 2 байт - период (2-50))
case 12: EFFECT_fireflies7(50, 100, 0); break;
case 13: EFFECT_fireflies7(50, 100, 1); break;
case 14: EFFECT_fireflies_line3new(50, 200, 0); break;
case 15: EFFECT_fireflies_line3new(50, 200, 1); break;
case 16: EFFECT_fireflies_line7(10, 200, 0); break;
case 17: EFFECT_fireflies_line7(10, 200, 1); break;
case 18: EFFECT_CMU7(50, 300, 2); break;
}
}

// = Случайный выбор режима цветомузыки ================================================================================
// Условие срабатывания: каждые 5 секунд "И" наличие "УДАРНИКА" (НЧ (SV[0])) - чтобы не переключалось в паузы
#define CMU_MODE_random_delay 5000
unsigned long CMU_MODE_random_timer;
byte CMU_MODE_random_rnd = 0;
 
  • Лойс +1
Реакции: Andorno и technotrasher

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
// = Случайный выбор режима цветомузыки ================================================================================
// Условие срабатывания: каждые 5 секунд "И" наличие "УДАРНИКА" (НЧ (SV[0])) - чтобы не переключалось в паузы
#define CMU_MODE_random_delay 5000
unsigned long CMU_MODE_random_timer;
byte CMU_MODE_random_rnd = 0;
электронную часть не меняли? схема та же? мне тоже интересно!!! АРУ тут только в одном из проектов использовали. а как это будет работать? это аппаратное или программное? я тоже такое хочу. :) можно от крутилки тогда избавиться.
 

OlegAnadyr

★★✩✩✩✩✩
30 Ноя 2018
8
51
электронную часть не меняли? схема та же? мне тоже интересно!!! АРУ тут только в одном из проектов использовали. а как это будет работать? это аппаратное или программное? я тоже такое хочу. :) можно от крутилки тогда избавиться.
АРУ по схеме "А6". Там следим за сигналом (программно) и если сигнала много - подаем команду PT2257 убавить "громкость", если наоборот, то... Алгоритм... пока "развлекаюсь", но... интересное "развлечение". Сделал 3-х секундную АРУ (для быстрой регулировки) и ей больше пользуюсь, и постоянно включенной.
А вообщем-то надо наседать на Alex`a. Он хотел изначально делать на MSGEQ7 - пусть ВЫКРУЧИВАЕТСЯ!
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
АРУ по схеме "А6". Там следим за сигналом (программно) и если сигнала много - подаем команду PT2257 убавить "громкость", если наоборот, то... Алгоритм... пока "развлекаюсь", но... интересное "развлечение". Сделал 3-х секундную АРУ (для быстрой регулировки) и ей больше пользуюсь, и постоянно включенной.
А вообщем-то надо наседать на Alex`a. Он хотел изначально делать на MSGEQ7 - пусть ВЫКРУЧИВАЕТСЯ!
Мне видится, что Алексу не интересны старые проекты. пройденный этап. он сделал. иногда как попало. отдал нам на изучение. и "пошёл" дальше. так что... дальше все в наших руках.
 

OlegAnadyr

★★✩✩✩✩✩
30 Ноя 2018
8
51
Мне видится, что Алексу не интересны старые проекты. пройденный этап. он сделал. иногда как попало. отдал нам на изучение. и "пошёл" дальше. так что... дальше все в наших руках.
Зря ты так. Не "как попало", а для широких масс, простенько, доступно для повторения.
На счет моего проекта - ищите рабочую MSGEQ7. У меня (по моему) из 7 купленных в разных магазинах 1 живая, 1 полуживая. И на счет PT2257 - надо поискать с более "плавной" регулировкой, т.е. с большем количеством "резисторов" и с "меньшем" номиналом. Больший диапазон регулирования нужен для плавности той-же АРУ. А так-же, кто будет делать этот проект - сразу переписать на microLED от Alex`a - больше места останется для всяких подстветок, режимов, эффектов и т.п.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
@OlegAnadyr,
Как будет у Вас готовый "бетта" скетч - я могу озадачиться такими микросхемами. да. иногда китайцы присылают брак. было такое с модулями времени. с микролед - я уже попросил всех. может сообща сделаем. "как попало" - скетчи часто с лишним. то что не нужно. не используется, но не удалено из него. ну и платы у него выполненны часто... скажем - быстро. :) но рабочее все. но так не интересно. интересно - сделать сложнее!!!
 

Ziby

✩✩✩✩✩✩✩
17 Апр 2020
1
0
Всем привет!
Можно ли реализовать проект на Arduino uno?
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
На всякий случай здесь напишу. В своей прошивке под лампу добавил возможность цветомузыки, есть:
1. Мин/Макс амплитуда на каждые 30мс
2. Частота главной гармоники на каждые 300мс 200Гц...5кГц (но можно и весь массив разложения по Фурье получить, если нужно)
3. Эффекты
4. Контроллер esp8266 или esp32

Что требуется - кто-нить, кому будет интересно подмешать в имеющиеся эффекты зависимость от звука, или новые сделать. У меня на все времени не сильно хватает. В общем кому интересно приглашаю на тестирование и доведение до красоты в тему :)
 

sp1er

✩✩✩✩✩✩✩
20 Апр 2020
4
0
Всем привет. Собрал по схеме с ИК пультом и микрофоном, залил прошивку, но ни один светодиод не загорается. проверил питание, на все компоненты приходит. Подскажите как отладить?
 

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Проверь подключение ленты. Плюс, минус и направление сигнала.
 

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Если всё исправно и правильно подключено, то оно не может не работать или по крайней мере совсем не светиться. Из вашего сообщения первое что попадает под подозрение так это лента. Если лента WS2812b исправна и правильно подключена (это адресная лента и имеет вход и выход), то тогда уже можно переходить к ардуине.
Кстати, а как там по умолчанию, при первом включении, цму выключена или это уже потом, когда пультом выключишь, то после включения в сеть цму остаётся выключенной и включится только с пульта? Давно я с ней не игрался, но по моему после прошивки сразу работает.
 
Изменено:

sp1er

✩✩✩✩✩✩✩
20 Апр 2020
4
0
Если всё исправно и правильно подключено, то оно не может не работать или по крайней мере совсем не светиться. Из вашего сообщения первое что попадает под подозрение так это лента. Если лента WS2812b исправна и правильно подключена (это адресная лента и имеет вход и выход), то тогда уже можно переходить к ардуине.
Кстати, а как там по умолчанию, при первом включении, цму выключена или это уже потом, когда пультом выключишь, то после включения в сеть цму остаётся выключенной и включится только с пульта? Давно я с ней не игрался, но по моему после прошивки сразу работает.
Может есть скетч, который тестово ленту прогонит, у меня там 103 диода. Что такое ЦМУ?