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

12.04.2019
80
10
8
У меня на входе ардуинки стоит потенциометр для подстройки уровня входящего сигнала. Один крайний вывод этого потенциометра подключен к общему, другой крайний вывод- к выходу микрофонного усилителя, а средний- к входу А2. Так что да, у меня А2 притянут к общему.
 
30.04.2019
31
3
8
сброс настроек в EEPROM памяти (поставить 1, прошиться, поставить обратно 0, прошиться. Всё)
мне не помог данный способ. Ситуация аналогичная:
Подключаю через микрофон.
Прошивки пробовал 2.8, 2.10 - 1,2 режим - горят все светодиоды постоянной радугой.
Прошивка 2.3 - в режиме 1,2 горит серединка, края сантиметров по 15 моргают, до конца ленты не доходят, но если крутить потенциометр то иногда чувствительность меняется и масштаб задействованных светодиодов меняется, но эффект быстро теряется.
 
Последнее редактирование:
14.10.2019
27
8
3
Я тоже изначально хотел поставить переменник на входе ардуины, но при таком подключении небыло реакции на звук. И выше я написал, что если у вас та же ситуация, ставьте конденсатор.
 
14.10.2019
27
8
3
Monty, у вас похоже тоже самое, что и у меня было. При высоком уровне сигнала напряжение на пин А2 поднимается до 1.2 - 1.4 вольта, но при снижении уровня напряжение остаётся , от этого и светятся пиксели. А2 надо притянуть к массе.
 
30.04.2019
31
3
8
1 и 2 режим заработали случайным для меня образом, но мне показалось, что чувствительность микрофона слабовата.
Подключил Резистор на 10кОм по указанной ранее схеме (А2-GND), теперь потенциометр надо меньше выкручивать (примерно на 25% от максимума, а ранее было примерно на 75%), изменения в чувствительности микрофона не почувствовал, с телефона если музыка играет, то желательно ставить на всю громкость и в 2-3 метрах от микрофона.
Проблема в том, что там где работает 1,2 режим, не работают все остальные (кроме 9 кажется) и наоборот. 1,2 режимы работают на большем уровне потенциометра (не знаю как правильно выразиться), если сделать так чтобы работали все режимы, то 1 и 2 будут в тишине гореть по середине достаточно широкой полосой, что убирается выкручиванием потенциометра в большую сторону процентов на 10,но при этом перестают работать другие режимы (кстати высокие частоты кое как распознаются, низкие совсем пропадают).
Ещё я не ставил конденсатор на вход (который на 1000мКф), потому что я так понял он влияет только на работу пульта, а у меня с этим проблем нет. Это не может влиять на работу в целом?
 
14.10.2019
27
8
3
Выше я уже описывал как настроить первый режим, перечитайте ещё раз. Подстроечный резистор напряжения aref устанавливается один раз на режиме -1 и больше его не трогать.
Чувствительность режимов 3-8 выставляется пультом. Посмотрите ещё раз видио и инструкцию "Управление с ИК пульта "
 
30.04.2019
31
3
8
Спасибо за совет. Сделал сброс в 1 режиме нажатием на 0, в тишине все равно горели светодиоды, увеличил уровень потенциометра до момента пока диоды не погасил. Далее проверил что реагирует на музыку 1,2 режимы. Далее стал проверять режимы 3-8 и настраивать их чувствительность клавишами вверх и вниз, задрочил весь пульт, но результат не удовлетворительный. Диоды либо вообще не горят, либо горят все сразу и не под музыку, иногда мигают высокие частоты, реже низкие и средние, но в основном вообще не реагирует на музыку. Опять же если потенциометр крутить то ситуация поправима, но как уже было сказано - этот метод не верный.
Еще второй вопрос - можно ли использовать 2 канала в одной схеме? Чтобы по желанию подключать либо через Aux, либо через микрофон. Я так понимаю что для этого нужно внедрять переключатель
 
Симпатии: Понравилось salam
12.04.2019
80
10
8
@Monty, кажется, у вас что то с качеством сигнала приходящего от микрофонного модуля. Попробуйте вместо него использовать сигнал от линейного выхода
 
30.04.2019
31
3
8
@Monty, кажется, у вас что то с качеством сигнала приходящего от микрофонного модуля. Попробуйте вместо него использовать сигнал от линейного выхода
Надо перепаивать. Думаю через aux будет лучше, но в идеале чем меньше проводов тем лучше) поэтому я бы хотел какую то схему, чтобы можно было переключаться быстро между aux и микрофоном, чтобы не перепаивать каждый раз.
 
12.04.2019
80
10
8
Один механический выключатель или если кто такой умный- переделать скетч чтобы с пульта переключать между двумя входами ардуинки.
 
14.10.2019
27
8
3
Как вариант есть миниджек гнёзда с переключателем. Втыкаешь аудио штекер и вход уже переключился.
Вы какой конденсатор воткнули между микрофоном и А2? У меня к сожалению сейчас совсем нет времени рисовать схему, что бы не было лишних вопросов и хождения вокруг трёх деталей. Может чуть позже или ещё кто нарисует.
 
Симпатии: Понравилось salam
30.04.2019
31
3
8
Как вариант есть миниджек гнёзда с переключателем. Втыкаешь аудио штекер и вход уже переключился.
Вы какой конденсатор воткнули между микрофоном и А2? У меня к сожалению сейчас совсем нет времени рисовать схему, что бы не было лишних вопросов и хождения вокруг трёх деталей. Может чуть позже или ещё кто нарисует.
На который дана ссылка в проекте - 22 мкФ, 6.3 В и между А2 и А3 - 0.01 мкф (103 маркеровка).
 
Последнее редактирование:
14.10.2019
27
8
3
Если первый и второй режимы отрабатывают верно, то проблема последующих режимов может быть вовсе и не в схеме. Тут надо также понимать, что телефон как источник звукового сигнала не особо то и подходит, я бы даже сказал, что совсем не подходит. Снять сигнал кабелем с выхода на наушники это да, там должен быть полноценный сигнал, а через пищалку называемую громкоговоритель полного ряда частот ну никак не снять. Если первый и второй режимы фиксируют уровень, то как раз третий и четвёртый фиксируют ещё и частоту.
Нет в сигнале соответствующей частоты значит нет и отображения этой частоты.
Пробуйте кабель, там видно будет.
 
30.06.2019
11
2
3
Ну так что поможешь? Нужен второй вариант)
Лови: светодиод на плате Арудино нано (пин 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] );
  //
}
 
27.10.2019
4
0
1
@NikShel, емкость проходного электролита не надо ставить больше 10uF. И я бы посоветовал после него на пин ардуинки добавить сопротивление на минус питания, килоомов на 10. Это чтобы избежать странного поведения кондёра, когда тот заряжается на высокое сопротивление входа ардуинки.
@lice, Виктор, спасибо!
Установил нужные номиналы, заработало с первого тыка!!
IMG_20191109_115554_1CS.jpg IMG_20191109_123934.jpg IMG_20191109_123953.jpg
 
08.11.2019
1
0
1
Все привет нужна вашая помощь собрал всю схему по питанию 5в но прошляпил и купил ленту на 12в поскажите если я питание подам на самую ленту 12 в а провод управления с Ардуино не сгорит плата . И ещё дайте пожалуйста на реальные драйвера не могу установить те что идут с програмой
 
12.04.2019
80
10
8
@Atreika, с ардуинкой ничего не случится. Только резистор последовательно шине данных незабудьте.
Какие драйвера? СН340?
 
21.01.2019
8
0
1
Всем привет,заранее извиняюсь если уже кто-то был с такой проблемой(не нашёл), решил сделать и я светомузыку, но с первого раза не прокатило
Вообщем проблема такая, подключил всё как по схеме, но вместо самой музыки начинает гореть просто зелёно-оранжевая полоса, причём уменьшается с 60 светодиодов до примерно 30, прчём если отключить в этот момент джек от компьютера то начнёт переливаться радуга, а если от ардуины - просто тускло фиолетовый цвет. Что самое интересное, если по создавать помех чем-нибудь железным на джеке - музыка начинает "работать". Заранее спасибо всем за помощь
Комплектация:
arduino pro mini (пробовал так же uno)
Кнопка
Сам джек
Светодиодная лента на 60 светодиодов (питание подведено через конденсатор, а пин через резистор)
Вместо переменного резистора использую опорный источник питания
Моя конфигурация ниже, фотографии самой платы так же
И ещё раз заранее спасибо всем за помощь 1vY8k7BZ2ao.jpg Oy0WgRPDlbA.jpg

Код:
// ***************************** НАСТРОЙКИ *****************************

// ----- настройка ИК пульта
#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
 
12.04.2019
80
10
8
@Mltr_wglr, 1) тусклый фиолетовый- тфк и должно быть когда нет сигнала 2) вы ничего не написали по поводу- делали ли сброс шумов 3) ничего не написали по поводу- какой уровень сигнала подается с компьютера.
Очень похоже на то что входящий сигнал слишком «громкий»- надо уменьшать.