il bello è che potresti fare un array nell'array in cui sono contenuti in sequenza i pin da accendere

ad esempio
byte pins[][] = {
{20, 30, 40},
{20, 30, 50},
{10, 20, 30, 50},
{10, 20, 30, 40, 50}
}
è un array che contiene altri array. viene chiamato multidimensionale (in questo caso bidimensionale)
ho scritto dei pin alla cavolo non so nemmeno se esistono devo ammette ma ora ti faccio capire il trucchetto

riprendo la macro scritta da tuxduino e la trasformo in funzione, la differenza è che la funzione è calcolata durante lo svolgimento del programma mentre la macro durante la compilazione (o almeno io la sapevo così

)
void array_length(byte a) {
return (sizeof(a)/sizeof(a[0]));
}
ok fatto questo puoi sapere ogni volta quanti valori hai in ogni array
ora pensiamo al ciclo

quando vuoi richiamare il valore di un array multidimensionale hai necessità di 2 indici. gli indici sono dei numeri che vanno a "selezionare" il valore, vedile come le righe di un programma.
però noi abbiamo delle righe e delle colonne quindi abbiamo 2 indici per poter leggere 1 solo valore

spero tu mi segua
ricorda che gli indici partono da 0
for (byte i = 0; i < array_lenght(pins); i++) {
for (byte z = 0; z < array_lenght(pins[i]); z++) {
Serial.print(pins[i][z]);
Serial.print(" ");
}
Serial.println();
}
se aprirai il monitor seriale con questo codice nel setup (o stamperà all'infinito) vedrai che dovrebbe riportarti il tuo array
unico dubbio che mi è sorto:
noi calcoliamo il numero di elementi dell'array come un rapporto tra grandezza dell'array e grandezza del primo valore, ma in un array dimensionale i cui "sotto-array" sono di grandezza variabile è attendibile come sistema? quindi ogni sotto-array è grande (in questo caso) un byte o ogni suo valore all'interno è un byte?
perchè in tal caso sballerebbe la lunghezza sull'intero array...