Here is a first pass cut at problem, again using mBlock and a Arduino Nano board.
The delay between rampdown and rampup, is that fixed, and width of 100% brightness also,
is that fixed ?
Note also I used two pwms, inside part, one to control brightness, the other to create a DAC for the scope capture shot above.
Ignore fuzz on scope capture waveform, thats just a limited RC filter used to effect the DAC from the PWM output. I just did
not use large enough values to remove the clock noise coming out of PWM.
So all you would need is the board, LED, and a R. If you did it with ATTINY85 just the chip and LED and R and Cap to bypass
the ATTINY85 power pin. TINY solution less accurate timing than board unless you added a xtal (board has xtal).
When I did the jump to full brightness I did it from 50% to 100%, I think 25% to 100% looks better.
This is roughly solution would look like if you used the ATTINY85 -
Nano Board I think better because programming is simpler, and has accurate timekeeping.
Regards, Dana.