simulando disparos

Muchas gracias por contestar Cheyenne.
La verdad es que me ha sorprendido el funcionamiento que se describe para el blink sin delay. Porque en el fondo es una forma de hacer un delay, verdad?.
Bueno, el caso es que he estado probando formas de implementar como me dices el blink sin delay a los leds para el pwm pero no hay manera. No sale nada, se quedan los leds apagados.
También te quería preguntar otra cosa. Como te dije en el primer post, lo que quiero es una especie de simulación de disparos, es decir, que habrá momentos en los que haya varios pwm desvaneciéndose a la vez mientras que otros se están encendiendo (disparando). Pero yo creo que con el ejemplo que tu me dices, lo que hago es que vaya pasando de un pwm a otro sin delay, pero una vez que está dentro de las lineas que hacen el desvanecimiento del pwm, hasta que no termine de desvanecerlo del todo no pasará al siguiente, no?.
Este es el código al que he llegado después de estar toda la tarde poniendo y quitando líneas. Aunque he declarado dos salidas de pwm solo he estado intentando que funcione al menos una, pero no ha habido forma.
Si me pudiérais dar una mano o incluso si me pudiérais poner un ejemplo con al menos 3 pwm que funcionen como os digo os lo agradezco porque el montaje que quiero hacer deberá tener más de 30 salidas de estas y quiero entender bien como funciona este circuito para intentarlo luego mediante matrices o algo parecido.
Saludos.

/* Blink without Delay

Turns on and off a light emitting diode(LED) connected to a digital
pin, without using the delay() function. This means that other code
can run at the same time without being interrupted by the LED code.

The circuit:

  • LED attached from pin 13 to ground.
  • Note: on most Arduinos, there is already an LED on the board
    that's attached to pin 13, so no hardware is needed for this example.

created 2005
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen

This example code is in the public domain.

*/

const int salipwm1 = 10; // the number of the LED pin
const int salipwm2 = 11;

int fadeAmount = 1;
int brightness = 250 ;

long previousMillis = 0; // will store last time LED was updated

long interval = 1000; // interval at which to blink (milliseconds)

void setup() {
// set the digital pin as output:
pinMode( salipwm1, OUTPUT);
pinMode( salipwm2, OUTPUT);
}

void loop()
{

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {

previousMillis = currentMillis;

if (salipwm1 == LOW) {
digitalWrite( salipwm1, HIGH);
fade1();
}
}

}

void fade1(){

do{

analogWrite(salipwm1, brightness);
fadeAmount = - fadeAmount ;
brightness = brightness - fadeAmount;

if (brightness == 1 )
{
digitalWrite (salipwm1, LOW);
}

delay(5);
}while(1 !=brightness);

digitalWrite(salipwm1, LOW);

}