fft bin
- Войдите на сайт для отправки комментариев
Сб, 09/03/2019 - 20:56
Добрый день.
Серийный плоттер показывает все bin, как сделать так,чтобы он показывал только один bin, например bin #35 ?
Всего их здесь 64.
#include "arduinoFFT.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
#define SAMPLES 128 //Must be a power of 2, # of bins = samples/by 2 = 64
#define SAMPLING_FREQUENCY 1000 //Hz, must be less than 10000 due to ADC
int i;
arduinoFFT FFT = arduinoFFT();
unsigned int sampling_period_us;
unsigned long microseconds;
double vReal[SAMPLES];
double vImag[SAMPLES];
void setup() {
Serial.begin(115200);
lcd.begin(16, 2);
sampling_period_us = round(1000000 * (1.0 / SAMPLING_FREQUENCY));
}
void loop() {
/*SAMPLING*/
for (int i = 0; i < SAMPLES; i++)
{
microseconds = micros(); //Overflows after around 70 minutes!
// vReal[i] = analogRead(0);
vReal[i] = analogRead(PA7);
vImag[i] = 0;
while (micros() < (microseconds + sampling_period_us)) {
}
}
/*FFT*/
FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, SAMPLES);
double peak = FFT.MajorPeak(vReal, SAMPLES, SAMPLING_FREQUENCY);
/*PRINT RESULTS*/
// Serial.println(peak); //Print out what frequency is the most dominant.
for (int i = 0; i < (SAMPLES / 2); i++)
{
/*View all these three lines in serial terminal to see which frequencies has which amplitudes*/
// Serial.print((i * 1.0 * SAMPLING_FREQUENCY) / SAMPLES, 1);
//Serial.print(" ");
Serial.println(vReal[i], 1); //View only this line in serial plotter to visualize the bins
}
//delay(1000); //Repeat the process every second OR:
// while(1); //Run code once
lcd.setCursor(0, 0);
lcd.print("V");
lcd.setCursor(3, 0);
lcd.print(peak);
}
Какие есть идеи?
В 53 строке вместо i написать 35. Ну и 47 строку закомментировать.
Правильно лия понимаю, что:
1) код не Ваш?
2) Вы в нём не понимаете ни одной буквы?
3) и не хотите понимать?
Мне нужны ответы на все три вопроса. чтобы понять как Вам можно помочь.
Я понял, что ответы на мри первые два вопроса - да.
Но на третий вопрос Вы не ответили.
Я здесь и поэтому , чтобы понять.
То что там написано понятно, но есть вопросы.
Ну, если так, то, учитывая
могу порекомендовать Вам одну из самых простеньких книжек, проще просто некуда. По-хорошему, её мало, но нчните с неё. Если Вы её нормально изуите, то таких постов как этот, у Вас больше не будет.
https://drive.google.com/open?id=0B9r7cRXQ4DU4dTBtRFpub0tfV00
Только именно изучайте, а не "просматривайте". Повторяю, если изучите, то таких постов, как этот у Вас больше не будет.
То что там написано понятно
Не обольщайтесь. Если Вы не знаете, как закомментировать строчку и как напечатать одно значение, а не все, то, на самом деле, Вам там НИ ХРЕНА (от слова "хрен") не понятно. Примите это и изучайте книгу, которую я Вам дал. Пока не изучите, не возвращайтесь.
= разбирайся сам.
Невозможно научить танцевать человека, который не то что ходить, а еще ползать не научился.
Здесь форум, а не школа. Заявки типа "хочу научиться танцевать" принимаются только от людей, которые уже умеют ходить.
У вас в тексте закомментированны строки 52 и 51.
А вообще я присоединяюсь к остальным комментаторам - сначала учить язык. Без этого вы дальше на добром отношении не пробьётесь.
= разбирайся сам.
Именно так! Вам был задан вопрос
3) и не хотите понимать?
Если бы Вы честно ответили "да", я, возможно, сказал бы Вам как закомментировать строку. Но Вы ответили "хочу научиться", я и стал помогать Вам учиться. И, как всегда, огрёб благодарность за помощь.
Вот и поучилось, только не знаю как здесь вставить своё изображение.
похоже на это, макс на 272 Гц
Вот и поучилось
Т.е. книга так и не изучена, а проблема решилась благодаря посту #10? Ну, что ж, "бег на месте" - тоже спорт.