Go Down

Topic: Trying to optimise my analogRead for steadier Readings (7BIT) (Read 530 times) previous topic - next topic

nutty

Hi,
I'm building a midi controller with a couple dozen 10k linear pots using 2 4067 multiplexers.

I'm currently using:
Code: [Select]
map(analogRead(0),0,1023,0,127)

Although stability isn't not terrible, I'm still getting +/-1 oscillations when some of the pots are in mid travel. Unnoticeable during performance but I real pain when the knobs fight each-other when the computer is in "learn" mode.

Midi CC only requires 7BIT resolution so I'm wondering if there is a way to lower the ADC's resolution to 7BIT since I'm trashing the resolution anyway with the Map function.

Thanks in advance for any insight.


RuggedCircuits

Sure, just throw away the lower 3 bits of the 10-bit reading:

Code: [Select]
value = analogRead(0) >> 3;

You're kind of doing this anyways (inefficiently) using the map() function, so I doubt this will get rid of your +/-1 oscillation. Consider filtering, either median filtering or just averaging N readings.

--
Beat707: MIDI drum machine / sequencer / groove-box for Arduino

nutty

Thanks RG!

I will try some averaging and see how it goes.

Congrats on the 707, fantastic work I have to say!
Cheers!

robtillaart

check - http://arduino.cc/playground/Main/RunningAverage - or - http://arduino.cc/playground/Main/RunningMedian -
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up