Duda sobre programa parpadeo de leds

Buenas, estoy trasteando un poco para coger práctica con programas fáciles antes de ponerme con algún proyecto más difícil y me ha surgido una duda.
tengo 4 leds y voy encendiendo uno a uno mientras los otros se quedan encendidos, la cosa es que lo he intentado hacer de modo que nunca estén todos encendidos a la vez de manera que en cada instante solo hay un led con corriente intentando de esta forma que el brillo de estos sea constante durante todo el proceso independientemente del número de leds encendidos.

Lo hacen de forma muy rápida y parece que se mantengan encendidas al ojo humano pero aún así me pierden brillo, alguien me podría explicar como solucionar esto y porque pasa? aunque sea muy rápido solo tengo 1 led encendido en cada instante

Lo he hecho con un switch, por ejemplo os dejo un ejemplo de cuando están 3 de los leds encendidos:
case 3:
frec=2;
for (int i ; i<300 ; i++){
digitalWrite(2,HIGH);
delay(frec);
digitalWrite(2,LOW);
delay(frec);
digitalWrite(3,HIGH);
delay(frec);
digitalWrite(3,LOW);
delay(frec);
digitalWrite(4,HIGH);
delay(frec);
digitalWrite(4,LOW);
delay(frec);
}

mira te adjunto un enlace de youtube haber si te sirve.

Usa millis() como te ha sugerido ArduMyth.

espero que te sirva.

Ve a Documentación => Indice de temas tutoriales => millis() y también lee máquina de estados.