#include <arduinoFFT.h>
// Fréquence d'échantillonnage en Hz
#define SAMPLE_RATE 100
// Broche analogique à laquelle le signal audio est connecté
#define ANALOG_PIN_A A0
// Broche analogique à laquelle le potentiommetre est connecté
#define ANALOG_PIN_P A1
// Créer une instance de la classe arduinoFFT
arduinoFFT FFT = arduinoFFT();
void setup() {
Serial.begin(9600);
}
void loop() {
// Nombre d'échantillons pour la FFT
const int samples = 128;
// Partie réelle des échantillons
double signalReal[samples];
// Partie imaginaire des échantillons
double signalImag[samples];
// lecture des échantillons audio depuis la broche analogique (J'ai ici mis un stick analogique en plus car pas de micro)
for (int i = 0; i < samples; i++) {
//pour les tests, si besoin commenter cette ligne et decommanter la suivante.
signalReal[i] = analogRead(ANALOG_PIN_A);
//signalReal[i] = analogRead(ANALOG_PIN_A) + analogRead(ANALOG_PIN_P);
signalImag[i] = 0;
// Attente pour atteindre la fréquence d'échantillonnage désirée
delayMicroseconds(1000 / SAMPLE_RATE);
}
// Effectuer la transformée de Fourier rapide (FFT)
FFT.Windowing(signalReal, samples, FFT_WIN_TYP_RECTANGLE, FFT_FORWARD);
FFT.Compute(signalReal, signalImag, samples, FFT_FORWARD);
FFT.ComplexToMagnitude(signalReal, signalImag, samples);
// Afficher les fréquences obtenues
for (int i = 0; i < samples / 2; i++) {
Serial.print(signalReal[i]);
Serial.print(" ");
}
Serial.println();
// Ajouter une pause pour des raisons de lisibilité
delay(1000);
}