Programación de funciones

hola

Tengo un mega y utilice todos los pines,el squech que muestro funciona ,lo que hace es al detectar un sonido uno de los led patron (led,A,B,C,D,E) se apaga y enciende 2 led con un delay ,esto lo repite 3 veces,no es aleatorio ya que yo los elijo, y vario el orden led(C,E,A),(B,A,C) (D,E,A).
Lo que no resuelvo es : caja1, caja2, caja3, ect son el contador para que no se repita, al sacarlo el squech funciona pero a su antojo repitiendo a veces y cambiando el orden, hasta aca podría servirme, lo que quiero es una vez que el ciclo de 3 veses se realice, se enciendan de nuevo todos los led,A,B,C,D,E.
Le suprimo el contador, pero no logro, que repita. Tengo 50 efec diferentes, pero no logro por ejemplo al final de este mismo enceder los 5 leds para repetir otra frecuencia y otra, y otra y asi.

int pin[]={0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68}; 
//int caja1=1;
//int caja2=1;
//int caja3=1;
//int caja4=1;
//int caja5=1;
int mic=1;
int i;
int son=0;
int n=0;
int cont=0;
void setup(){

for(i=0;i<=68;i++){
pinMode(pin[i],OUTPUT);
digitalWrite(pin[i],HIGH);
}
digitalWrite(12,LOW);// led a
digitalWrite(16,LOW);// led b
digitalWrite(29,LOW);// led c
digitalWrite(42,LOW);// led d
digitalWrite(68,LOW);// led e
pinMode(mic,INPUT);
}
void efec_4(){  //we repeat the same code with the second led pattern 
if(caja4<=1){ 
for(n=0;n<=11;n++){
son=digitalRead(mic);
if(son==HIGH){
while(digitalRead(mic)==HIGH &digitalRead(42),LOW);

digitalWrite(42,HIGH);  //apago la caja 
caja4=caja4+1;//apago la caja     
 digitalWrite(46,LOW);
 delay(700);
digitalWrite(46,HIGH);  
    digitalWrite(36,LOW);
 delay(500);
digitalWrite(36,HIGH);
}   
else
digitalWrite(46,HIGH);
digitalWrite(36,HIGH);
return;
}
}
}
void  efec_1(){  
if(caja1<=1){ 
for(n=0;n<=11;n++){
son=digitalRead(mic);
if(son==HIGH){
while(digitalRead(mic)==HIGH &digitalRead(12),LOW); 
digitalWrite(12,HIGH);  //apago la caja 
caja1= caja1+1;//apago la caja    
 digitalWrite(5,LOW);
 delay(650);
digitalWrite(5,HIGH);  
  digitalWrite(6,LOW);
 delay(650);
digitalWrite(6,HIGH);  
      
}   
else
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
return;
}
}
}
void  efec_5(){ 
if(caja5<=1){ 
for(n=0;n<=12;n++){
son=digitalRead(mic);
if(son==HIGH){
while(digitalRead(mic)==HIGH &digitalRead(68),LOW); 

digitalWrite(68,HIGH);  //apago la caja 
caja5=caja5+1;//apago la caja    
 digitalWrite(62,LOW);
 delay(550);
digitalWrite(62,HIGH);  
  digitalWrite(59,LOW);
 delay(550);
digitalWrite(59,HIGH);     
}   
else
digitalWrite(59,HIGH);
digitalWrite(62,HIGH);
return;
}
}
}
void loop(){ 
efec_4();
efec_1();
efec_5();
  
}

Hola popa1551, te invito a que descubras las normas del foro y luego de haberlo hecho edites este hilo porque has cometido como mínimo dos errores.
1. el título no tiene que ver con el contenido. Asi que usa un título que reflejo tu consulta.
2. Los códigos no se postean con texto plano, sino usando etiquetas. </>. Por favor hazlo.

HOLA si lei las normas del foro que son muy claras y seguro las implemente mal ,pero soy argentino despues de las ultimas elecciones ,párese lógico hacer trastadas , en cuanto al titulo reflejo mi estado ya que ataque el tema durante mucho tiempo,y de muchas formas y sospecho que es simple ,pero no la veo.
GRACIAS POR RESPONDERME

Si quieres que te ayuden en el foro, tienes que seguir las normas del foro.

Para quejas políticas usa el sport bar. O tus amigos, aquí nos centramos en la programación. Que es un arte/ciencia preciso.

Ahora bien a lo que entiendo; haces el efecto ABCD y quieres pasar al BCDA, pero primero quieres encender todos los pines ?

Bueno, eso es sencillo:

void funcion_enciendeTodo() 
{
     for (int z = 0; z<52; z++) 
     {
           digitalWrite(pin[z], HIGH) // or low segun sea tu caso. 
     }

}

es el chiste de escribir funciones que hagan lo que quieres.

Ahora, en tu codigo... hace algo asi:

funcion (ABCDE );
funcion_enciendeTodo();
funcion (BCDE );
funcion_enciendeTodo();
funcion (CDEBA );
funcion_enciendeTodo();

y listo, el orden lo pones tu, las funciones lo hacen realidad.

Saludos.
-Alex.

He editado el título y el código ya que @popa1551 considera que es demasiado trabajo.
Quedas advertido por incurrir en faltas a las normas de aqui en mas.