luxdrv - custom modes driver firmware with ramping

Well, the ramping in luxdrv does that - in 25 steps though, so it's not a smooth fade. Also it always writes into EEPROM, which wears that out after some hours, so you could copy that procedure and omit the EEPROM writing.

Additionally, TIDO's firmware and sixty545's variant have that, see here and here (posts #254 and 264).

The output pin can be changed in these lines, which refer to pin6, PB1, OC0B

#define outpin 1
#define PWM OCR0B //PWM-value

to pin 5, PB0, OCR0A:

#define outpin 0
#define PWM OCR0A //PWM-value

It must be one of these two pin though, since only these have hardware PWM.