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

Monty

✩✩✩✩✩✩✩
30 Апр 2019
35
5
Спасибо за совет. Сделал сброс в 1 режиме нажатием на 0, в тишине все равно горели светодиоды, увеличил уровень потенциометра до момента пока диоды не погасил. Далее проверил что реагирует на музыку 1,2 режимы. Далее стал проверять режимы 3-8 и настраивать их чувствительность клавишами вверх и вниз, задрочил весь пульт, но результат не удовлетворительный. Диоды либо вообще не горят, либо горят все сразу и не под музыку, иногда мигают высокие частоты, реже низкие и средние, но в основном вообще не реагирует на музыку. Опять же если потенциометр крутить то ситуация поправима, но как уже было сказано - этот метод не верный.
Еще второй вопрос - можно ли использовать 2 канала в одной схеме? Чтобы по желанию подключать либо через Aux, либо через микрофон. Я так понимаю что для этого нужно внедрять переключатель
 
  • Лойс +1
Реакции: salam

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
@Monty, кажется, у вас что то с качеством сигнала приходящего от микрофонного модуля. Попробуйте вместо него использовать сигнал от линейного выхода
 

Monty

✩✩✩✩✩✩✩
30 Апр 2019
35
5
@Monty, кажется, у вас что то с качеством сигнала приходящего от микрофонного модуля. Попробуйте вместо него использовать сигнал от линейного выхода
Надо перепаивать. Думаю через aux будет лучше, но в идеале чем меньше проводов тем лучше) поэтому я бы хотел какую то схему, чтобы можно было переключаться быстро между aux и микрофоном, чтобы не перепаивать каждый раз.
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
Один механический выключатель или если кто такой умный- переделать скетч чтобы с пульта переключать между двумя входами ардуинки.
 

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Как вариант есть миниджек гнёзда с переключателем. Втыкаешь аудио штекер и вход уже переключился.
Вы какой конденсатор воткнули между микрофоном и А2? У меня к сожалению сейчас совсем нет времени рисовать схему, что бы не было лишних вопросов и хождения вокруг трёх деталей. Может чуть позже или ещё кто нарисует.
 
  • Лойс +1
Реакции: salam

Monty

✩✩✩✩✩✩✩
30 Апр 2019
35
5
Как вариант есть миниджек гнёзда с переключателем. Втыкаешь аудио штекер и вход уже переключился.
Вы какой конденсатор воткнули между микрофоном и А2? У меня к сожалению сейчас совсем нет времени рисовать схему, что бы не было лишних вопросов и хождения вокруг трёх деталей. Может чуть позже или ещё кто нарисует.
На который дана ссылка в проекте - 22 мкФ, 6.3 В и между А2 и А3 - 0.01 мкф (103 маркеровка).
 
Изменено:

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Если первый и второй режимы отрабатывают верно, то проблема последующих режимов может быть вовсе и не в схеме. Тут надо также понимать, что телефон как источник звукового сигнала не особо то и подходит, я бы даже сказал, что совсем не подходит. Снять сигнал кабелем с выхода на наушники это да, там должен быть полноценный сигнал, а через пищалку называемую громкоговоритель полного ряда частот ну никак не снять. Если первый и второй режимы фиксируют уровень, то как раз третий и четвёртый фиксируют ещё и частоту.
Нет в сигнале соответствующей частоты значит нет и отображения этой частоты.
Пробуйте кабель, там видно будет.
 

Sergy

✩✩✩✩✩✩✩
30 Июн 2019
16
4
Ну так что поможешь? Нужен второй вариант)
Лови: светодиод на плате Арудино нано (пин 13) мерцает в такт НЧ звукам ( у меня усилитель микрофона, подключен к A2).

C++:
//
// LowBandLed - вывод на INFO_PIN единицы, если в сигнале есть низкие частоты
//
#define INFO_PIN  13   // куда подключен НЧ-светодиод
#define SOUND_PIN A2   // куда подключен звук
//
#define LOWSOUND_MAX    70 // макс. уровень НЧ (не более 255)
#define LOWSOUND_STEP   10 // уровень НЧ, выше которого будет вспыхивать светодиод

#define FHT_N   64     // 64 корзины входных, 32 выходных
#define LOG_OUT  1     // логарифмическая шкала
#include <FHT.h>       // преобразование Хартли
//
void setup() {
  //
  pinMode( INFO_PIN, OUTPUT );
  analogReference( EXTERNAL );  // AREF подключаем напрямую к 3.3v
  //
  // поднимаем частоту дискретизации до 38 кГц:
  //
  #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
  #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
  sbi(ADCSRA, ADPS2);
  cbi(ADCSRA, ADPS1);
  sbi(ADCSRA, ADPS0);
  //
}

void loop() {
  //
  AnalyzeAudio();
  //
  ShowLowBandLed();
}
//
void ShowLowBandLed() {
  //
  digitalWrite( INFO_PIN, ( fht_log_out[1] > LOWSOUND_STEP ) );
  //
}
//
void AnalyzeAudio() {
  //
  for (byte i=0; i<FHT_N; i++) {
    fht_input[i] = analogRead( SOUND_PIN );
  }
  //
  NoiseCancel();
  //
  // Fast Hartley Transform:
  //
  fht_window();  // window the data for better frequency response
  fht_reorder(); // reorder the data before doing the fht
  fht_run();     // process the data in the fht
  fht_mag_log(); // take the output of the fht
  //
}
//
void NoiseCancel() {
  //
  static byte Prev = 0;
  //
  int Diff = (fht_log_out[1] - Prev)/2;
  Prev     = fht_log_out[1];
  //
  fht_log_out[1] = Diff*Diff;
  fht_log_out[1] = min( LOWSOUND_MAX, fht_log_out[1] );
  //
}
 

NikShel

✩✩✩✩✩✩✩
27 Окт 2019
4
0
@NikShel, емкость проходного электролита не надо ставить больше 10uF. И я бы посоветовал после него на пин ардуинки добавить сопротивление на минус питания, килоомов на 10. Это чтобы избежать странного поведения кондёра, когда тот заряжается на высокое сопротивление входа ардуинки.
@lice, Виктор, спасибо!
Установил нужные номиналы, заработало с первого тыка!!
IMG_20191109_115554_1CS.jpgIMG_20191109_123934.jpgIMG_20191109_123953.jpg
 

Atreika

✩✩✩✩✩✩✩
8 Ноя 2019
1
0
Все привет нужна вашая помощь собрал всю схему по питанию 5в но прошляпил и купил ленту на 12в поскажите если я питание подам на самую ленту 12 в а провод управления с Ардуино не сгорит плата . И ещё дайте пожалуйста на реальные драйвера не могу установить те что идут с програмой
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
@Atreika, с ардуинкой ничего не случится. Только резистор последовательно шине данных незабудьте.
Какие драйвера? СН340?
 

Mltr_wglr

✩✩✩✩✩✩✩
21 Янв 2019
8
0
Всем привет,заранее извиняюсь если уже кто-то был с такой проблемой(не нашёл), решил сделать и я светомузыку, но с первого раза не прокатило
Вообщем проблема такая, подключил всё как по схеме, но вместо самой музыки начинает гореть просто зелёно-оранжевая полоса, причём уменьшается с 60 светодиодов до примерно 30, прчём если отключить в этот момент джек от компьютера то начнёт переливаться радуга, а если от ардуины - просто тускло фиолетовый цвет. Что самое интересное, если по создавать помех чем-нибудь железным на джеке - музыка начинает "работать". Заранее спасибо всем за помощь
Комплектация:
arduino pro mini (пробовал так же uno)
Кнопка
Сам джек
Светодиодная лента на 60 светодиодов (питание подведено через конденсатор, а пин через резистор)
Вместо переменного резистора использую опорный источник питания
Моя конфигурация ниже, фотографии самой платы так же
И ещё раз заранее спасибо всем за помощь 1vY8k7BZ2ao.jpgOy0WgRPDlbA.jpg

C++:
// ***************************** НАСТРОЙКИ *****************************

// ----- настройка ИК пульта
#define REMOTE_TYPE 0       // 0 - без пульта, 1 - пульт от WAVGAT, 2 - пульт от KEYES, 3 - кастомный пульт
// система может работать С ЛЮБЫМ ИК ПУЛЬТОМ (практически). Коды для своего пульта можно задать начиная со строки 160 в прошивке. Коды пультов определяются скетчем IRtest_2.0, читай инструкцию

// ----- настройки параметров
#define KEEP_SETTINGS 1     // хранить ВСЕ настройки в энергонезависимой памяти
#define KEEP_STATE 1            // сохранять в памяти состояние вкл/выкл системы (с пульта)
#define RESET_SETTINGS 0    // сброс настроек в EEPROM памяти (поставить 1, прошиться, поставить обратно 0, прошиться. Всё)
#define SETTINGS_LOG 0      // вывод всех настроек из EEPROM в порт при запуске

// ----- настройки ленты
#define NUM_LEDS 60        // количество светодиодов (данная версия поддерживает до 410 штук)
#define CURRENT_LIMIT 3000  // лимит по току в МИЛЛИАМПЕРАХ, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
byte BRIGHTNESS = 200;      // яркость по умолчанию (0 - 255)

// ----- пины подключения
#define SOUND_R A2         // аналоговый пин вход аудио, правый канал
#define SOUND_L A1         // аналоговый пин вход аудио, левый канал
#define SOUND_R_FREQ A3    // аналоговый пин вход аудио для режима с частотами (через кондер)
#define BTN_PIN 3          // кнопка переключения режимов (PIN --- КНОПКА --- GND)

#if defined(__AVR_ATmega32U4__) // Пины для Arduino Pro Micro (смотри схему для Pro Micro на странице проекта!!!)
#define MLED_PIN 17             // пин светодиода режимов на ProMicro, т.к. обычный не выведен.
#define MLED_ON LOW
#define LED_PIN 9               // пин DI светодиодной ленты на ProMicro, т.к. обычный не выведен.
#else                           // Пины для других плат Arduino (по умолчанию)
#define MLED_PIN 13             // пин светодиода режимов
#define MLED_ON HIGH
#define LED_PIN 12              // пин DI светодиодной ленты
#endif

#define POT_GND A0              // пин земля для потенциометра
#define IR_PIN 2                // пин ИК приёмника

// ----- настройки радуги
float RAINBOW_STEP = 5.00;         // шаг изменения цвета радуги

// ----- отрисовка
#define MODE 0                    // режим при запуске
#define MAIN_LOOP 5               // период основного цикла отрисовки (по умолчанию 5)

// ----- сигнал
#define MONO 0                    // 1 - только один канал (ПРАВЫЙ!!!!! SOUND_R!!!!!), 0 - два канала
#define EXP 1.4                   // степень усиления сигнала (для более "резкой" работы) (по умолчанию 1.4)
#define POTENT 0                  // 1 - используем потенциометр, 0 - используется внутренний источник опорного напряжения 1.1 В
byte EMPTY_BRIGHT = 30;           // яркость "не горящих" светодиодов (0 - 255)
#define EMPTY_COLOR HUE_PURPLE    // цвет "не горящих" светодиодов. Будет чёрный, если яркость 0

// ----- нижний порог шумов
uint16_t LOW_PASS = 100;          // нижний порог шумов режим VU, ручная настройка
uint16_t SPEKTR_LOW_PASS = 40;    // нижний порог шумов режим спектра, ручная настройка
#define AUTO_LOW_PASS 0           // разрешить настройку нижнего порога шумов при запуске (по умолч. 0)
#define EEPROM_LOW_PASS 1         // порог шумов хранится в энергонезависимой памяти (по умолч. 1)
#define LOW_PASS_ADD 13           // "добавочная" величина к нижнему порогу, для надёжности (режим VU)
#define LOW_PASS_FREQ_ADD 3       // "добавочная" величина к нижнему порогу, для надёжности (режим частот)

// ----- режим шкала громкости
float SMOOTH = 0.3;               // коэффициент плавности анимации VU (по умолчанию 0.5)
#define MAX_COEF 1.8              // коэффициент громкости (максимальное равно срднему * этот коэф) (по умолчанию 1.8)

// ----- режим цветомузыки
float SMOOTH_FREQ = 0.8;          // коэффициент плавности анимации частот (по умолчанию 0.8)
float MAX_COEF_FREQ = 1.2;        // коэффициент порога для "вспышки" цветомузыки (по умолчанию 1.5)
#define SMOOTH_STEP 20            // шаг уменьшения яркости в режиме цветомузыки (чем больше, тем быстрее гаснет)
#define LOW_COLOR HUE_RED         // цвет низких частот
#define MID_COLOR HUE_GREEN       // цвет средних
#define HIGH_COLOR HUE_YELLOW     // цвет высоких

// ----- режим стробоскопа
uint16_t STROBE_PERIOD = 140;     // период вспышек, миллисекунды
#define STROBE_DUTY 20            // скважность вспышек (1 - 99) - отношение времени вспышки ко времени темноты
#define STROBE_COLOR HUE_YELLOW   // цвет стробоскопа
#define STROBE_SAT 0              // насыщенность. Если 0 - цвет будет БЕЛЫЙ при любом цвете (0 - 255)
byte STROBE_SMOOTH = 200;         // скорость нарастания/угасания вспышки (0 - 255)

// ----- режим подсветки
byte LIGHT_COLOR = 0;             // начальный цвет подсветки
byte LIGHT_SAT = 255;             // начальная насыщенность подсветки
byte COLOR_SPEED = 100;
int RAINBOW_PERIOD = 1;
float RAINBOW_STEP_2 = 0.5;

// ----- режим бегущих частот
byte RUNNING_SPEED = 11;

// ----- режим анализатора спектра
byte HUE_START = 0;
byte HUE_STEP = 5;
#define LIGHT_SMOOTH 2
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
@Mltr_wglr, 1) тусклый фиолетовый- тфк и должно быть когда нет сигнала 2) вы ничего не написали по поводу- делали ли сброс шумов 3) ничего не написали по поводу- какой уровень сигнала подается с компьютера.
Очень похоже на то что входящий сигнал слишком «громкий»- надо уменьшать.
 

Mltr_wglr

✩✩✩✩✩✩✩
21 Янв 2019
8
0
@Mltr_wglr, 1) тусклый фиолетовый- тфк и должно быть когда нет сигнала 2) вы ничего не написали по поводу- делали ли сброс шумов 3) ничего не написали по поводу- какой уровень сигнала подается с компьютера.
Очень похоже на то что входящий сигнал слишком «громкий»- надо уменьшать.
1) Фиолетовый появляется если подключить джек к пк и удержать кнопку 2) Как я понял из видио - удерживание кнопки и есть сброс шумов 3) Вот здесь не понял, можно по подробнее ?
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
@Mltr_wglr, да, удержание кнопки есть сброс шумов, при этом незабудьте, что звук при этом не должен звучать- на входе должны присутствовать только паразитические шумы.
Уровень сигнала- я имел ввиду «громкость» сигнала, который поступает на вход ардуинки. Уменьшите его до минимального.
Чего показывает линейка светодиодов когда уровень звука =0, то есть MUTE?
 

Mltr_wglr

✩✩✩✩✩✩✩
21 Янв 2019
8
0
@Mltr_wglr, да, удержание кнопки есть сброс шумов, при этом незабудьте, что звук при этом не должен звучать- на входе должны присутствовать только паразитические шумы.
Уровень сигнала- я имел ввиду «громкость» сигнала, который поступает на вход ардуинки. Уменьшите его до минимального.
Чего показывает линейка светодиодов когда уровень звука =0, то есть MUTE?
То что нужно делать сброс шумов при выключенной музыке это понятно, прикол в том что при подключении, это полоска которая в видио показывает шумы сначала замирает на всю полосу, а потом сходит до середины и замирает, если сбросить шумы при этом то появляться фиолетовый тусклый
Если снизить звук до 0 то так же горит фиолетовый
 

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Вообще то по умолчанию должен быть синий, который можно поменять на другой более подходящий по вкусу, но это так, к слову.
По последнему описанию всё выглядит так как и должно быть. Шумы обнуляются с подключенным джеком, но без музыки, то есть ставим на паузу.
То, что потом остаётся светиться убираем подстройкой подстроечным резистором подключённым к пину Aref. Потом включаем музон и подстраиваем уровень громкости вашего устройства (не цму) до оптимального отображения эффектов цму.
Мы об этом толдычим уже последние 5-6 страниц.
Кто подключается от ПК, смартфонов, планшетов и т.д. Это НЕ ЛИНЕЙНЫЙ выход и уровень амплитуды на этом выходе меняется в зависимости с выставленной громкостью. Поэтому цму будет моргать ровно на столько на сколько выставлена громкость на вашем устройстве.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
500
223
Реализовал голой Atmega328p. Насколько я правильно понимаю, что в проекте светомузыки, что в проекте с анализатором частот ты снимаешь только верхнюю часть аудиопотока, то есть все что выше нуля, в то время как сам аудиосигнал колеблется вокруг нуля, то есть ты забиваешь и теряешь часть сигнала.Следовательно и частоты у тебя будут ползти и по факту после преобразования фурье ты получаешь не то что у тебя в действительности должно быть. Необходимо сначала внести постоянную составляющую - поднять звук чтобы ты весь диапазон мог оцифровать, а потом после оцифровки отнять её.
Вот я об этом тоже думал. Не могли бы указать как сделать эту доработку. Я не программист. Но если укажите хотя бы места доработки - я все выучу. Установка станет более чувствительна к частотам? так? то-есть меньше информации будет пропадать.
 

Victor_Murr

✩✩✩✩✩✩✩
16 Ноя 2019
7
0
Мурманск
Привет, ребят. Такая проблема есть... всё работает, а звук зараза не снимает. Пробовал уже и другой кондер, другой потенциометр, брать с двух каналов (левый и правый) или с одного, ничего не помогает.

Выглядит это всё примерно так: включается лента на первом режиме, плавненько гаснут светодиоды по бокам и на этом всё, в режимах частот вообще ничего не происходит.
Может кто знает в чем проблема и как её лечить?

Сделано на входе мини-джек и подключено к ПК через Line OUT. Прошивка последняя, 2.10.

На фото то самое постоянное состояние в первом режиме:IMG_20191116_031502[1].jpg
 
Изменено:

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Я понимаю, что в век кибернетики некогда читать 38 страниц, но тем не менее хоть чуть чуть то поиск поюзать то можно.
Всё написано парой постами выше. Да и прежде чем всё собирать надо бы инструкцию до конца почитать, да и видосик посмотреть.
У вас явная проблема большинства. НЕ ОТРЕГУЛИРОВАН ШУМ. Произведите начальные настройки и будет вам счастье.
 

Artrik

✩✩✩✩✩✩✩
31 Окт 2019
2
1
Всем привет!
Кто-нибудь пробовал написать код, чтобы режимы переключались сами?
Допустим через какое-то рандомное время, либо время указанное самим(?!)
Может кто-нибудь сделает доброе дело? =)
 

Victor_Murr

✩✩✩✩✩✩✩
16 Ноя 2019
7
0
Мурманск
Я понимаю, что в век кибернетики некогда читать 38 страниц, но тем не менее хоть чуть чуть то поиск поюзать то можно.
Всё написано парой постами выше. Да и прежде чем всё собирать надо бы инструкцию до конца почитать, да и видосик посмотреть.
У вас явная проблема большинства. НЕ ОТРЕГУЛИРОВАН ШУМ. Произведите начальные настройки и будет вам счастье.
Всё отрегулировано, всё делалось по инструкции, от начала до конца. По этому то я сюда и обратился, уже другого выхода не вижу. И проблема не в том, что шумит что либо, а в том, что он вообще звук не снимает.
 

viktor001

★✩✩✩✩✩✩
14 Окт 2019
113
36
Чудес не бывает. После начальной настройки должен светиться только синий фон (режим - 1) У вас светится средняя часть, что говорит о наличии напряжения на пине А2 (порядка 1.2 вольта) Если ещё не установлен, то поставьте между пин А2 и массой резистор примерно 10к.
В обычной комплектации ПК, так называемого выхода Line Out нет. Линейный выход ( Line Out) в бытовой аппаратуре – выход с нормированным уровнем напряжения и не зависящим в том числе от установки регулятора громкости. Стандартный номинал - 0,7 вольт.
В звуковых же картах уровень выходного сигнала программно регулируется и достигает до 2 вольт, обеспечивая таким образом подключение наушников нагрузкой 32 Ом. Эта инфа не имеет прямого отношения к цму, просто меня коробит когда происходит подмена понятий и начинается мешанина. Немудрено, что при общении никто никого не понимает.
 
Изменено:

Victor_Murr

✩✩✩✩✩✩✩
16 Ноя 2019
7
0
Мурманск
Чудес не бывает. После начальной настройки должен светиться только синий фон (режим - 1) У вас светится средняя часть, что говорит о наличии напряжения на пине А2 (порядка 1.2 вольта) Если ещё не установлен, то поставьте между пин А2 и массой резистор примерно 10к.
В обычной комплектации ПК, так называемого выхода Line Out нет. Линейный выход ( Line Out) в бытовой аппаратуре – выход с нормированным уровнем напряжения и не зависящим в том числе от установки регулятора громкости. Стандартный номинал - 0,7 вольт.
В звуковых же картах уровень выходного сигнала программно регулируется и достигает до 2 вольт, обеспечивая таким образом подключение наушников нагрузкой 32 Ом. Эта инфа не имеет прямого отношения к цму, просто меня коробит когда происходит подмена понятий и начинается мешанина. Немудрено, что при общении никто никого не понимает.
Поставил по Вашему совету резистор, ничего не поменялось, так же не определяет звук и светит в середине... Еще варианты?)