Rgb matrix (64х32) P3 анализатор спектра

Тема в разделе "Arduino & Shields", создана пользователем KilLTHEBZzZ, 3 фев 2017.

  1. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Здравствуйте форумчане! Я студент, многих тонкостей не знаю, так что не обессудьте. Я хочу сделать на матрице анализатор спектра через быстрое преобразование Фурье. Можете подсказать как работает это быстрое преобразование Фурье и как это должно правильно выглядеть в коде. Я в интернете видел похожие проекты на дисплее от nokia 5110, на телевизоре и на схожей матрице, пробовал заменить код для своего проекта, но ничего не выходило, либо требовался особый драйвер, которого не было.

    По моим соображениям приблизительно должно быть что то такое:

    #include <Adafruit_GFX.h>
    #include <RGBmatrixPanel.h>
    #define CLK 11 // выход CLK подключаем к 11 цифровому порту
    #define OE 9 // выход OE подключаем к 9 цифровому порту
    #define LAT 10 // выход LAT подключаем к 10 цифровому порту
    #define A A0 // выход А подключаем к А0 аналоговому порту
    #define B A1 // выход В подключаем к А1 аналоговому порту
    #define C A2 // выход С подключаем к А2 аналоговому порту
    #define D A3 // выход D подключаем к А3 аналоговому порту
    RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false,64);
    #include <fix_fft.h>
    char im[128], data[128], lastpass[64];
    char x=32, ylim=64;
    int i=0,val;
    void setup() {
    matrix.begin();
    matrix.fillRect(0,0,64,64, matrix.Color333(0,0,0));
    for (int z=0; z<64; z++) {lastpass[z]=80;}
    }
    void loop() {
    for (i=0; i < 128; i++){
    val = analogRead(0);
    data = val -128;
    im = 0;
    }
    fix_fft(data,im,7,0);
    for (i=1; i< 64;i++) {
    data = sqrt(data * data + im * im);
    matrix.drawLine(i+x,lastpass,i+x,ylim,matrix.Color333(7, 0, 0));
    matrix.drawLine(i+x,ylim,i+x,ylim-data,matrix.Color333(0, 7, 0));
    lastpass=ylim-data;
    }
    }

    но, выдает ошибку
    In file included from C:\Users\KilLTHEBzZz\Desktop\proba\proba.ino:11:0:

    C:\Program Files (x86)\Arduino\libraries\FFT/fix_fft.h:4:22: fatal error: WProgram.h: No such file or directory

    #include <WProgram.h>

    ^

    compilation terminated.

    exit status 1
    Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.
    Ошибка вроде из за библиотеки, но при попытке ее замены, ругается на строчку fix_fft(data,im,7,0);
    В общем помогите пожалуйста, поделитесь знаниями)
     

    Вложения:

  2. rkit

    rkit Гуру

    Если заменил библиотеку, то и код, ее использующий надо заменять.
    А вообще, wprogram.h переименовали в arduino.h, и может быть достаточно заменить в библиотеке.
     
  3. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Я пробовал заменить wprogram.h на arduino.h, но выдает другую ошибку
     

    Вложения:

  4. rkit

    rkit Гуру

    Это вы что-то не то туда написали. Опечатка
     
  5. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Можете показать как должно быть правильно или дать ссылку на правильную библиотеку?
     
  6. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Вот что происходит после замены
    #include "WProgram.h"
    на
    #if defined(ARDUINO) && ARDUINO >= 100
    #include "Arduino.h"#else
    #include "WProgram.h"#endif
    в файлах с расширениями .h и .cpp
     

    Вложения:

  7. rkit

    rkit Гуру

    Значит библиотеку так просто не починить. Значит печаль. Ищите рабочую, или пишите самостоятельно.
     
  8. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Нашел нужную библиотеку, но результат не оправдал моих ожиданий... Может кто-нибудь помочь с написанием кода?
     
  9. mcureenab

    mcureenab Гуру

    https://forum.arduino.cc/index.php?topic=361843.0
     
  10. mcureenab

    mcureenab Гуру

    https://github.com/sparkfun/SevSeg/issues/10
     
  11. mcureenab

    mcureenab Гуру

    http://forum.arduino.cc/index.php?topic=147680.0
     
  12. KilLTHEBZzZ

    KilLTHEBZzZ Нуб

    Проблема с библиотекой решена, была найдена новая библиотека, но сам скетч не правильный, может кто-нибудь помочь с написанием ?