Arduino Helpers master
Utility library for Arduino


This examples shows how to filter an analog input, so you can get the position of a knob or fader without noise.

AVR, AVR USB, Nano Every, Nano 33 IoT, Nano 33 BLE, Due, Teensy 3.x, ESP8266, ESP32


Connect the left terminal of the potentiometer to ground, and the right one to VCC.


The example 1.FilteredAnalog-Advanced.ino has more information about the parameters you can pass to the FilteredAnalog class to tweak the filters, increase the resolution, etc.

Written by PieterP, 2019-10-10

// Include the library
// Create a filtered analog object on pin A0, with the default settings:
FilteredAnalog<> analog = A0;
void setup() {
while (!Serial);
// Select the correct ADC resolution
// Initialize the filter to whatever the value on the input is right now
// (otherwise, the filter is initialized to zero and you get transients)
void loop() {
// Read the analog input every millisecond, and print if the value has changed
static Timer<millis> timer = 1; // ms
if (timer && analog.update())
// Explanation:
// analog.update() reads the analog input, applies the filters,
// saves the value, and returns true if the value has changed.
// You can then retreive the new value using analog.getValue().
// Timer is just a "Blink Without Delay" wrapper, it returns true
// every time the specified amount of time has passed.
Dummy header file for Arduino builder.
A class that reads and filters an analog input.
void resetToCurrentValue()
Reset the filtered value to the value that's currently being measured at the analog input.
static void setupADC()
Select the configured ADC resolution.
AnalogType getValue() const
Get the filtered value of the analog input (with the mapping function applied).
bool update()
Read the analog input value, apply the mapping function, and update the average.
A class for easily managing timed events.