Визуализатор спектра

Тема в разделе "Arduino & Shields", создана пользователем rbibokon, 23 май 2017.

  1. rbibokon

    rbibokon Нерд

    просто у нас проект вообще на троих и моя часть это визуализатор, и человек который работает с воспроизведением музыки через ардуинку сказал что ардуино уно не поддерживает входной аналоговый сигнал. может он что-то не понимает? Может в скайпе?
     
  2. mcureenab

    mcureenab Гуру

    В Ардуино есть АЦП который преобразует напряжение на входе от 0 до 5 Вольт в число от 0 до 1023. Если использовать другой источник опорного напряжения, например, например 1.1 В, то в число от 0 до 1023 будет преобразовано напряжение от 0 до 1.1 В.

    Смотри функцию https://www.arduino.cc/en/Reference/AnalogReference для настройки источника опорного напряжения.

    И функцию https://www.arduino.cc/en/Reference/AnalogRead для оцифровки аналогового сигнала.

    Если с источника поступает переменное напряжение ( которое проходит чере 0 Вольт и меняет полярность, нужно сделать вольтодобавку, чтобы амплитуда сигнала лежала не в пределах, - 2,5 ... + 2.5, а в пределах 0 В ... 5В.
     
  3. rbibokon

    rbibokon Нерд

    а вы смотрели файл что я скинул?
     
  4. g0nimy

    g0nimy Нуб

    А как можно данный проект адаптировать под светодиодную ленту типа ws2811.
    У меня ну ни как не выходит каменный цветок...
     
  5. rbibokon

    rbibokon Нерд

    у тебя такой же проект?
     
  6. g0nimy

    g0nimy Нуб

    Хобби, для дома делаю и ломаю голову...
    Ни как не могу разобраться с этой библиотекой fix_ftt.
    Хочу разделить 300-т лампоную ленту разбить на 6 частотных каналов по 50 светодиодов...
     
  7. rbibokon

    rbibokon Нерд

    о ну это уже сложнее))) я со своим не могу разобраться))) если есть какие то мысли по поводу моего может подскажешь?)
     
  8. g0nimy

    g0nimy Нуб

    Fix_fft
     
  9. g0nimy

    g0nimy Нуб

    С лентой разобрался, хотя думал сложнее будет...
    А вот с анализатором частот пока ни как(((
    Не поддаётся быстрое преобразование фурье...
    Но если получится выложу обязательно. А то по данной тематике конкретики мало, все ссылаются на код типа, который указан выше...
     
  10. rbibokon

    rbibokon Нерд

    ага, либо через микросхему msgeq7
     
  11. mcureenab

    mcureenab Гуру

    Вот чел страдает.

    http://arduino.ru/forum/programmirovanie/rasshifrovka-fft-bibliotek

    И пример не хитрый. Частота маловата. Только для голоса сойдет. Но это решается самым простым циклом.

    https://github.com/TJC/arduino/blob/master/sketchbook/libraries/fix_fft/example.sketch

    А что не получается с FFT?
     
  12. rbibokon

    rbibokon Нерд

    что за скеч? да я просто 1 день сижу за ардуино)) и нифига еще не разобрался) подскажи куда подключать аналоговый вход на ардуино уно? то есть допустим с одной стороны мини джек с другой 3 провода и куда их подключать?
     
  13. mcureenab

    mcureenab Гуру

    Один на GND, Другой на любой из входов A0, A1, A2 и т.д. Пусть будет A0. Еще один видимо на 5 В (я не экстрасенс, чтобы догадаться какой у вас модуль в миниджеком). На модуль должна быть инструкция, или хотя бы маркировка выводов.

    Потом в скетче выполняем

    int v = analogRead(A0);

    . И v сохраняем в массив значений для скармливания FFT.
     
  14. rbibokon

    rbibokon Нерд

    у меня нету модуля с мини джеком)) хочу наушники разрезать)))
     
  15. mcureenab

    mcureenab Гуру

    Сигнал с выхода на наушники снять? Тогда один провод на GND (тот что подключен к кольцу дальнему от конца джека) и один на A0 ( тот что подключен к концу или к среднему концу джека). Схема будет сканировать один стерео канал.

    Только вот с напряжением на выходе надо поаккуратнее быть. Если осциллографа нет, подключите провод к A0 через резистор на 10кОм.

    Добейтесь, чтобы этот скетч выдавал значения от 0 до 300 ( в среднем) и до 900 в пике. Еще 123 оставим для особо громких звуков.

    Код (C++):
    void setup ()
    {
        Serial.begin(250000);
        while(!Serial){};
        Serial.println("Staring...");
    }

    void loop() {
       int v = analogRead(A0);
       Serial.println(v);
    }
     
    Используя схемотехнику добейтесь чтобы разброс значений был + - 150 вокруг 511. И в пиках от 61 до 962. Числа условные, но сигнал должен быть без перегрузки и ухода ниже 0 Вольт. Срез сигнала - это брак. Для преобразования Фурье искажения сигнала, с частности срез уровня создают помеху.
     
  16. rbibokon

    rbibokon Нерд

    ща попробую
     
  17. rbibokon

    rbibokon Нерд

    завтра попробую)))) если есть еще какая нибудь инфа что мне надо сделать напиши пожалуйста))) буду очень благодарен
     
  18. mcureenab

    mcureenab Гуру

    Найди понятные скетчи для твоей светодиодной матрицы, и поиграй с ними. Нужно чтобы матрица заработала.
    Как бы список задач.
    1. Подключение и управление матрицей светодиодов.
    2. Аппаратная подготовка сигнала к оцифровке - усиление/ослабление, фильтр НЧ, сдвиг уровня 0. Контроль сигнала на выходе осциллографом. Звуковой платой ПК.
    3. Оцифровка сигнала с сохранением в массив. Контроль результата через монитор порта. Проверка качества шага 2.
    4. Обработка результата 3. Контроль результата через монитор порта. Желательно на тестовых гармонических сигналах. Например с платы ПК сгенерить синусоидальные сигналы разной частоты.
    5. Интеграция с 1.
     
  19. rbibokon

    rbibokon Нерд

    на словах все понятно и просто)) а вот на деле уже сложнее))) матрицу подключил диодами управлял
     
  20. mcureenab

    mcureenab Гуру

    Вываливай.