// FIR passa-baixa (ordem 10) - Simulação Wokwi
const int M = 10;
float b[M+1] = {
0.045, 0.067, 0.089, 0.111, 0.133,
0.144,
0.133, 0.111, 0.089, 0.067, 0.045
};
float x[M+1] = {0};
void setup() {
Serial.begin(115200);
}
void loop() {
// leitura do sinal de entrada
float xn = analogRead(A0);
xn = xn / 1023.0; // normalização opcional
// deslocamento do buffer
for (int k = M; k > 0; k--) {
x[k] = x[k - 1];
}
x[0] = xn;
// cálculo do FIR
float y = 0;
for (int k = 0; k <= M; k++) {
y += b[k] * x[k];
}
// saída para monitor serial
Serial.print(xn, 4);
Serial.print(" ");
Serial.println(y, 4);
delay(5);
}