Arduino-signal-filtering-library

La libreria implementa dei filtri digitale molto scarsi (massimo secondo ordine con ripple elevato) viste le risorse computazionali molto limitate dell'MCU atmega328p

La frequenza di taglio del filtro (per il passa basso ad esempio) non viene specificata ma si potrebbe ricavare dai coefficienti dell'algoritmo.
Es. nel caso del filtro di Chebyshev del primo ordine c'è questo codice nella libreria:

int SignalFilter::runChebyshev(int data)
{
  if(_order==1) {                                 //ripple -3dB
    _v[0] = _v[1];
    long tmp = ((((data * 3269048L) >>  2)        //= (3.897009118e-1 * data)
      + ((_v[0] * 3701023L) >> 3)                 //+(  0.2205981765*v[0])
      )+1048576) >> 21;                           // round and downshift fixed point /2097152
    _v[1]= (int)tmp;
    return (int)(_v[0] + _v[1]);                  // 2^
  }
}

..ma è una cosa noiosa, è un problema di analisi (inverso del problema di sintesi) in quanto i valori non sono stati presi dalle tabelle standard, fai prima a chiedere all'autore con che parametri ha calcolato i coefficienti.

Ciao