Try this. It uses "millis timing" to give the effect that the blinking and fading are happening at the same time.
/*
* Sketch...: sketch_apr16a.ino
* Target...: Mega2560
*
* Notes....:
*/
//includes
//defines
//constants
const uint8_t led2 = 4;
const uint8_t led = 2; //note: if using an Uno choose one of pin 3, 5, 6, 9, 10, 11
const uint32_t kDelayBlink = 500ul; //500mS blink time
const uint32_t kDelayFade = 30ul; //30mS between fading LED updates
//variables
int16_t
fadeAmount = 5,
brightness = 0;
uint32_t
timeNow,
timerBlink,
timerFade;
bool
bLEDState = false;
void setup( void )
{
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
}//setup
void loop( void )
{
//get the millis count
timeNow = millis();
//blinking LED
//is it time to toggle the blinking LED?
if( (timeNow - timerBlink) >= kDelayBlink )
{
//yes; save the time for the next toggle
timerBlink = timeNow;
//XOR with 'true' flips bLEDState between true and false each pass
bLEDState ^= true;
//update LED
digitalWrite(led2, bLEDState);
}//if
//fading LED
if( (timeNow - timerFade) >= kDelayFade )
{
timerFade = timeNow;
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255)
{
fadeAmount = -fadeAmount;
}//if
analogWrite(led, brightness);
}//if
}//loop
Tested on a Mega. Note that pin 2 may not work with analogWrite on an Uno. It's fine on a Mega. See the comment in the code if you're using an Uno on using a different pin for the fading LED.