Цветомузыка

Тема в разделе "Arduino & Shields", создана пользователем Lagvin, 14 май 2015.

  1. Lagvin

    Lagvin Нерд

    Привет всем, так сложилось, что срочно понадобилась цветомузыка.
    Нужна помощь со кодом
    Имею : 1. Микрофонный усилитель(китай)
    2. Ардуино Уно
    3. Светодиодные ленты
    Очень хочу:
    1. код. с использованием несложных библиотек, например(FFT)
    2. по возможности схему.
    Я представляю так, с микрофона на Ао ардуины и с ШИМ на полевики. Хотелось бы 3-4 частотных разделения.
    Спасибо!
     
  2. iglooshtosser

    iglooshtosser Гик

    Я это вижу примепно так:
    Сигнал с усилителя на четыре (или три) полосовых фильтра.
    Выход каждого фильтра еще усилить (возможно ОУ).
    Усиленный сигнал с каждого фильтра на отдельный аналоговый вход...

    А может сразу на ключ? Зачем тогда ардуина?
    А если не усиливать после фильтра... не знаю хватит ли напряжения чтобы хоть что-то различить на аналоговых входах...
    А если без фильтров... осилит ли ардуина БПФ в реалтном времени? Не знаю..
     
  3. DrProg

    DrProg Вечный нерд

    В 80х делали из земли и палок, и норм. )
     
  4. Lagvin

    Lagvin Нерд

    Здесь есть программисты?
     
  5. ANV

    ANV Гуру

    Тут на Ардуино моргают лампочками и крутят моторчиками, а FFT это уже из разряда матана, т.е. удел труЪ гиков. Плюс ARM с поддержкой плавающей точки гораздо больше для этого подходит, поэтому пихать FFT в 8ми битный целочисленный контроллер сейчас неразумно.

    Однако если погуглить, то можно увидеть что впихнуть невпихуемое можно: http://apcmag.com/arduino-project-audio-spectrum-analyser.htm/
     
  6. DrProg

    DrProg Вечный нерд

    Я вот подумал, цветомузыка же не осциллограф какой нибудь, особая точность не нужна. Разделить грубо частоты на три диапазона, подать на аналоговые пины и помигать на пороговых значениях подобранных опытным путем или устанавливаемыми потенциометрами. Хотя можно калибровать программно в теории, путем прогона небольшого участка и записи в EEFROM максимальных или средних значений по каждому каналу.
    Нахожу эту задачку даже интересной.
     
  7. Lagvin

    Lagvin Нерд

    Было бы очень хорошо, чтобы Ваш интерес перрос в код.
     
  8. Lagvin

    Lagvin Нерд

    Есть такой код, но здесь нужно убрать лишнее, т.е. TVout и сделать выход 4 -х пинов.
    #include <TVout.h>
    #include <fix_fft.h>
    TVout TV;
    char im[128], data[128], lastpass[64];
    char x=32, ylim=90;
    int i=0,val;
    void setup()
    {
    TV.begin(_NTSC,128,96); // Initialize TV output, 128x96.
    TV.print_str(2,2," Realtime Arduino"); // TVout lib uses x,y for print
    TV.print_str(2,11," Spectrum Analyzer"); // statements. 8x8 default font.
    analogReference(DEFAULT); // Use default (5v) aref voltage.
    for (int z=0; z<64; z++) {lastpass[z]=80;}; // fill the lastpass[] array with dummy data
    };
    void loop()
    {
    for (i=0; i < 128; i++){ // We don't go for clean timing here, it's
    val = analogRead(0); // better to get somewhat dirty data fast
    data = val/4 -128; // than to get data that's lab-accurate
    im = 0; // but too slow, for this application.
    };

    fix_fft(data,im,7,0);

    for (i=1; i< 64;i++){ // In the current design, 60Hz and noise
    data = sqrt(data * data + im * im); // in general are a problem. Future designs
    TV.draw_line(i+x,lastpass,i+x,ylim,0); // and code may fix this, but for now, I
    TV.draw_line(i+x,ylim,i+x,ylim-data,1); // skip displaying the 0-500hz band completely.
    lastpass=ylim-data; // if you insist, initialize the loop with 0
    }; // rather than 1.
    };
     
  9. ANV

    ANV Гуру

    Сколько времени то есть на эту задумку?
     
  10. Lagvin

    Lagvin Нерд

    Одна неделя и два дня!
     
  11. ANV

    ANV Гуру

  12. DrProg

    DrProg Вечный нерд

    Программу написать не долго, а вот готова ли сама входная схема?
     
  13. Lagvin

    Lagvin Нерд

    Микросхема хорошая, прямь то,что надо, но есть только ардуино
     
  14. DrProg

    DrProg Вечный нерд

    Угу, червей копать экскаватором.
     
  15. ANV

    ANV Гуру

    Какая разница? По трудозатратам одинаково выходит, что готовый FFT запустить, что полосовые фильтры + V/F конвертер паять. С Ардуиной меньше паяльником чадить.
     
  16. Lagvin

    Lagvin Нерд

    Выходная схема не проблема, просто в ардуине можно еще и световые эфекты наложить, типа "Бегущий огонь, бегущая тень, и.т.п.
     
  17. Pi-Tone

    Pi-Tone Нерд

    я бы посоветовал использовать msgeq7
     
  18. Lagvin

    Lagvin Нерд

    Да, о ней уже говорилось и код под нее есть, осталось найти.
     
  19. iglooshtosser

    iglooshtosser Гик

    Прикольно. Все-таки БПФ на ардуине можно реализовать! Ну тогда задача в исходной постановке решается. Только... ТС не назвал сумму, которую готов уплатить за разработку :)
     
  20. Unixon

    Unixon Оракул Модератор

    За какое время выполняется в зависимости от параметров?