A simple approach I use a lot for such as noise reduction on relatively slow changing analog signals is just to average a number of samples; using a power of two makes it simple to program.
For each data source, you need two variables; an average accumulator and an output store, both big enough to hold the maximum input value * number of samples, without overflow.
eg. using 16x samples:
Initialise the output store with either the first data value, or a typical mid range value.
Multiply by 16 and store in the average accumulator.
In the main program: For each new sample, add that to the accumulator, then subtract the output store from the accumulator.
Divide the new accumulator value by 16 (eg. shift right four bits, save the result in the output store; that's also your smoothed value.
You could just as well use eg. four samples & shift two bits, or 64 and shift 6 bits; it's down to how much filtering you need and how much delay you can tolerate in any sudden changes of the input data becoming significant at the output of the averaging process.