primeras dudas, muy extraño

Hola otra vez.
Creo que tengo una pista que tal vez pueda ayudar a que me ayudéis con esto.
El problema viene dado por los "delay" del parpadeo.
He hecho el circuito de la forma más sencilla, con un solo led para que parpadee dos veces y luego entre en el fading y sigue dando problemas.
Si comento el parpadeo, el fading lo hace perfecto. Y si comento el fading el parpadeo lo hace bien. Si pongo todo junto solo hace el parpadeo.
PERO!, si quito solamente los delays del parpadeo pero dejo el resto del código del parpadeo, el fading también funciona!. De acuerdo que ese no es el funcionamiento que quiero porque sigo sin ver el parpadeo del principio. Pero está claro que lo que fastidia son los delays del parpadeo.
He seguido investigando y he puesto que el parpadeo se haga en el pin13 y el fading en el 11. Y el resultado es rarísimo :fearful::
resulta que el led del fading de la patilla 11 se va ejecutando con cada destello del parpadeo del led de la patilla 13. Es decir, empieza a incrementar y luego a decrementar un poco con cada parpadeo del otro led.
Ahí tiene que haber gato encerrado seguro!.
No sé si hay alguna norma que no conozca sobre que después de ejecutarse los delays el código regresa a alguna parte del código o yo qué se.
Ya véis que el circuito más sencillo, no puede ser :disappointed_relieved:.

Por favor, si alguien me puede arrojar algo de luz sobre esto se lo agradezco porque yo ya no sé qué más hacer. Y creedme que llevo haciendo un montón de pruebas todo el día.
Muchas gracias.

int led = 11; // the pin that the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by

void setup()
{
pinMode(led, OUTPUT);

}

void loop()
{
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);

analogWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 125)
{
fadeAmount = -fadeAmount ;
}
delay(30);
}