Здравствуйте форумчане! Я студент, многих тонкостей не знаю, так что не обессудьте. Я хочу сделать на матрице анализатор спектра через быстрое преобразование Фурье. Можете подсказать как работает это быстрое преобразование Фурье и как это должно правильно выглядеть в коде. Я в интернете видел похожие проекты на дисплее от 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); В общем помогите пожалуйста, поделитесь знаниями)
Если заменил библиотеку, то и код, ее использующий надо заменять. А вообще, wprogram.h переименовали в arduino.h, и может быть достаточно заменить в библиотеке.
Вот что происходит после замены #include "WProgram.h" на #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h"#else #include "WProgram.h"#endif в файлах с расширениями .h и .cpp
Нашел нужную библиотеку, но результат не оправдал моих ожиданий... Может кто-нибудь помочь с написанием кода?
Проблема с библиотекой решена, была найдена новая библиотека, но сам скетч не правильный, может кто-нибудь помочь с написанием ?