Проект Arduino, использующий алгоритм быстрого преобразования Фурье (FFT), предоставляет возможность анализировать аналоговые сигналы, определяя их частоты и амплитуды.
#include <arduinoFFT.h> - с маленькой буквы надо.
В вашем проекте нет ПБ.
Код: Выделить всё
#include "flprogUtilites.h"
#include "arduinoFFT.h"
#include "flprogUart.h"
FlprogUartExecutor FLProgUart;
#define FLPROG_UART_EXECUTOR FLProgUart
String Out_117014878_222076267;
String Out_36260122_222076267;
float Out_51940551_222076267;
String _stou3;
const int samples_222076267 = 256;
const int samplingFrequency_222076267 = 1000UL;
unsigned int sampling_period_us_222076267;
unsigned long microseconds_222076267;
float vReal_222076267[samples_222076267];
float vImag_222076267[samples_222076267];
ArduinoFFT<float> FFT_222076267 = ArduinoFFT<float>(vReal_222076267, vImag_222076267, samples_222076267, samplingFrequency_222076267);
void setup() {
FLProgUart.setSpeedUart(115200, 1);
FLProgUart.setDataBitUart(8, 1);
FLProgUart.setParityUart(0, 1);
FLProgUart.setStopBitUart(1, 1);
sampling_period_us_222076267 = round(1000000 * (1.0 / samplingFrequency_222076267));
}
void loop() {
microseconds_222076267 = micros();
for (uint16_t i = 0; i < samples_222076267; i++) {
vReal_222076267[i] = analogRead(A0); // заменить A0 на нужный канал
vImag_222076267[i] = 0;
while (micros() - microseconds_222076267 < sampling_period_us_222076267) {
}
microseconds_222076267 += sampling_period_us_222076267;
}
FFT_222076267.compute(FFTDirection::Forward);
FFT_222076267.complexToMagnitude();
for (uint16_t i = 0; i < (samples_222076267 >> 1); i++) {
Out_51940551_222076267 = ((i * 1.0 * samplingFrequency_222076267) / samples_222076267);
FLProgUart.printUart(String(Out_51940551_222076267), 1);
FLProgUart.printUart("Hz ", 1);
FLProgUart.printUart(String(vReal_222076267[i]), 1);
FLProgUart.printUart("\r\n", 1);
}
Out_117014878_222076267 = String(FFT_222076267.majorPeak());
FLProgUart.printUart(Out_117014878_222076267, 1);
FLProgUart.printUart("\r\n", 1);
delay(1000);
if (Out_36260122_222076267 != _stou3) {
FLProgUart.printUart(Out_36260122_222076267, 1);
FLProgUart.printUart("\r\n", 1);
_stou3 = Out_36260122_222076267;
}
}