Анализатор спектра (что куда подключать?)

Тема в разделе "Закажу проект", создана пользователем Mendex, 21 дек 2017.

  1. Mendex

    Mendex Нуб

    Ребят есть скетч. Помогите понять что куда подключить?
    видео на проект



    /*
    Arduino - Processing Real Time Spectrum Analyzer
    This program is intended output a FFT from a pc on a RGB matrix
    The program is based on the adafruit RGB matrix library: https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/
    The FFT results in the complimentary processing code handles 64 bands so the code calls for 2 panels, but can be modified for only one easily
    More information, including full parts list and videos of the final product can be seen on 12vtronix.com
    Youtube video sample:


    Created: 22nd Sep 2013 by Stephen Singh
    Last Modified: 10th May 2014 by Stephen Singh
    Variables with the <-O-> symbol indicates that it can be adjusted for the reason specified
    */
    #include <avr/pgmspace.h>
    #include <Adafruit_GFX.h> // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library
    #define CLK 8 // MUST be on PORTB!
    #define LAT A3
    #define OE 9
    #define A A0
    #define B A1
    #define C A2
    // Last parameter = 'true' enables double-buffering, for flicker-free,
    // buttery smooth animation. Note that NOTHING WILL SHOW ON THE DISPLAY
    // until the first call to swapBuffers(). This is normal.
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true);
    // <-O-> the values after "matrix.Color333" represent the RGB values with 7 being the brightest value for that particular colour
    void lightcolumns(int rownum, int amplitude)
    {
    if(amplitude>15) // <-O-> set the threshold for the band to turn red
    {
    for( int y = 0; y < amplitude; y++){
    matrix.drawPixel(rownum, y, matrix.Color333(7, 0, 0));
    }
    for(int y = amplitude; y <16; y++)
    {
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0));
    }
    }
    else if(amplitude>13) // <-O-> set the threshold for the band to turn yellow
    {
    for( int y = 0; y < amplitude; y++){
    matrix.drawPixel(rownum, y, matrix.Color333(4, 4, 0));
    }
    for(int y = amplitude; y < 16; y++)
    {
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0));
    }
    }
    else if(amplitude>9) // <-O-> set the threshold for the band to turn green
    {
    for( int y = 0; y < amplitude; y++){
    matrix.drawPixel(rownum, y, matrix.Color333(0, 5, 0));
    }
    for(int y = amplitude; y < 16; y++)
    {
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0));
    }
    }
    else
    {
    for( int y = 0; y < amplitude; y++){
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 7));
    }
    for(int y = amplitude; y < 16; y++)
    {
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0));
    }
    }
    }
    void setup()
    {
    matrix.begin();
    Serial.begin(115200);
    delay(1000);
    }
    void loop() {
    if(Serial.read() == ('M'))
    {
    int led1 = Serial.parseInt();
    int led2 = Serial.parseInt();
    int led3 = Serial.parseInt();
    int led4 = Serial.parseInt();
    int led5 = Serial.parseInt();
    int led6 = Serial.parseInt();
    int led7 = Serial.parseInt();
    int led8 = Serial.parseInt();
    int led9 = Serial.parseInt();
    int led10 = Serial.parseInt();
    int led11 = Serial.parseInt();
    int led12 = Serial.parseInt();
    int led13 = Serial.parseInt();
    int led14 = Serial.parseInt();
    int led15 = Serial.parseInt();
    int led16 = Serial.parseInt();
    int led17 = Serial.parseInt();
    int led18 = Serial.parseInt();
    int led19 = Serial.parseInt();
    int led20 = Serial.parseInt();
    int led21 = Serial.parseInt();
    int led22 = Serial.parseInt();
    int led23 = Serial.parseInt();
    int led24 = Serial.parseInt();
    int led25 = Serial.parseInt();
    int led26 = Serial.parseInt();
    int led27 = Serial.parseInt();
    int led28 = Serial.parseInt();
    int led29 = Serial.parseInt();
    int led30 = Serial.parseInt();
    int led31 = Serial.parseInt();
    int led32 = Serial.parseInt();
    if (Serial.read() == '\n')
    {
    lightcolumns(31, led1);
    lightcolumns(30, led2);
    lightcolumns(29, led3);
    lightcolumns(28, led4);
    lightcolumns(27, led5);
    lightcolumns(26, led6);
    lightcolumns(25, led7);
    lightcolumns(24, led8);
    lightcolumns(23, led9);
    lightcolumns(22, led10);
    lightcolumns(21, led11);
    lightcolumns(20, led12);
    lightcolumns(19, led13);
    lightcolumns(18, led14);
    lightcolumns(17, led15);
    lightcolumns(16, led16);
    lightcolumns(15, led17);
    lightcolumns(14, led18);
    lightcolumns(13, led19);
    lightcolumns(12, led20);
    lightcolumns(11, led21);
    lightcolumns(10, led22);
    lightcolumns(9, led23);
    lightcolumns(8, led24);
    lightcolumns(7, led25);
    lightcolumns(6, led26);
    lightcolumns(5, led27);
    lightcolumns(4, led28);
    lightcolumns(3, led29);
    lightcolumns(2, led30);
    lightcolumns(1, led31);
    lightcolumns(0, led32);
    matrix.swapBuffers(false);
    }
    }
    }
     
  2. rkit

    rkit Гуру

    Все написано
     
  3. Mendex

    Mendex Нуб

    А что это такое какой то микрофон ? Или шилд какой ?
     
  4. Mendex

    Mendex Нуб

    И ещё такой вопрос можно ли как нить сделать задержку на столбцы что бы они чуть плавней убирались?
     
  5. Developer-RU

    Developer-RU Гик

    Глядя на этот шмоток говнокода, проще написать по новой. (построил дом, а фундамент залить забыл, позже еще и подвал захочется, а там фундамент будет мешать)
     
  6. rkit

    rkit Гуру

    Нет. С такими вопросами обращайтесь к автору скетча.
     
  7. man9913

    man9913 Гик

    Нет, как я понял анализ спектра делает приложение на ПК и передает данные о спектре на ардуину по USB. Ардуина просто отображает столбики на матрицах.
     
  8. ostrov

    ostrov Гуру

    Особенно концовка кода впечатляет! Инусы обзавидовались! Остальное даже не смотрел.