#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include "arduinoFFT.h"
// Configurações do Sensor e FFT
Adafruit_MPU6050 mpu;
const uint16_t samples = 64; // Precisamos de potências de 2 (64, 128...)
double vReal[samples];
double vImag[samples];
ArduinoFFT<double> FFT = ArduinoFFT<double>(vReal, vImag, samples, 100);
void setup() {
Serial.begin(115200);
while (!mpu.begin()) {
Serial.println("Aguardando sensor...");
delay(500);
}
Serial.println("Sistema de Manutenção 4.0 Ativo!");
}
void loop() {
// 1. Coleta de dados de vibração (Aceleração em Z)
for (int i = 0; i < samples; i++) {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
vReal[i] = a.acceleration.z; // Pega a vibração vertical
vImag[i] = 0;
delay(10); // Simula amostragem de 100Hz
}
// 2. Cálculo da Transformada de Fourier (FFT)
FFT.windowing(FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.compute(FFT_FORWARD);
FFT.complexToMagnitude();
// 3. Mostra o resultado no "Gráfico" (Serial Plotter)
for (int i = 2; i < (samples / 2); i++) { // Ignora o ruído inicial
Serial.print("Frequencia_Hz:");
Serial.print(i);
Serial.print(" Intensidade:");
Serial.println(vReal[i]);
}
delay(1000); // Atualiza a cada 1 segundo
}