Moving average for ADC not working?
Even if you cast your ADC value to float like this:
Voltage2 = ((float)adc2 * 0.1875) / 1000.0;

you may end up with very small numbers (truncated do zero), assuming your ADC returns values from -32768 to 32767. Not to mention how slow the floating point operations may be (what is your micro-controller?).
Truncation to zero would happen here for small readings aprox. [-2666, 2666]:
readings[readIndex] = Voltage2;

What about changing your buffer to int32_t and scaling your readings:
int32_t adc2;
adc2 = ads.readADC_SingleEnded(2) * 1000;