Value gradient for LED sequence

I have a linear arrangement of 16 LEDs that I want to display a single-hued sequence from light to dark, with perceptually even increments from each light to the next. I have an excellent HSV to RGB routine for the Arduino, but when I linearly interpolate Value from 0 to 1, with constant hue and full saturation, most of the LEDs are bright, then there's a rapid fall-off to black at the very end of the sequence. I've found a C library that implements a perceptually uniform color space, called HSLuv, but it requires double-precision, so doesn't work properly on the Arduino. Can someone suggest either 1) How to do the value interpolation in HSV to get perceptual uniformity, or 2) A C library for a perceptually uniform color space that runs on Arduino? Thanks very much.

with perceptually even increments from each light to the next.

Look up gamma matching.

What kind of LEDs? How are they driven?

You may find that if using ws2811/12 etc or most other "NeoPixels" or using Arduino PWM pins, most of which are 8-bit resolution, that you may struggle to get the LEDs at the dimmer end to look like they have even increments.

I'm driving them using a pair of TLC5947 breakout boards. The HSV to RGB library I'm using
takes 8-bit saturation, 8-bit value, and 6*256 hues, output 8-bit R, G, and B values.

Elby:
The HSV to RGB library I'm using... output 8-bit R, G, and B values.

That's a shame, the chip is 12 bit.

Thanks, Mike, that was exactly what I needed! In case someone else needs this, the magic transformation is: pow(value, 2.2);