Ayuda proyecto flash led

Hola, estoy haciendo unas luces tipo disco y tal y por ahora me las he apañado para hacer 3 efectos diferentes, pero el problema esta en que me gustaría cargarlos al arduino y con pulsadores, interruptores o l o que sea poder cambiar la función, como poderia hacerlo?
Aqui os dejo un ejemplo de uno de los 3 programas que tengo realizado
int ledDelay = 60; // delay by 50ms
int l1 = 2;
int l2 = 3;
int l3 = 4;
int l4 = 7;
int l5 = 8;
int l6 = 9;
void setup() {
pinMode(l1, OUTPUT);
pinMode(l2, OUTPUT);
pinMode(l3, OUTPUT);
pinMode(l4, OUTPUT);
pinMode(l5, OUTPUT);
pinMode(l6, OUTPUT);
}
void loop() {
digitalWrite(l1, HIGH);
digitalWrite(l2, HIGH);
digitalWrite(l3, HIGH);
delay (ledDelay);
digitalWrite(l1, LOW);
digitalWrite(l2, LOW);
digitalWrite(l3, LOW);
delay(ledDelay);
digitalWrite(l1, HIGH);
digitalWrite(l2, HIGH);
digitalWrite(l3, HIGH);
delay (ledDelay);
digitalWrite(l1, LOW);
digitalWrite(l2, LOW);
digitalWrite(l3, LOW);
delay(ledDelay);
digitalWrite(l1, HIGH);
digitalWrite(l2, HIGH);
digitalWrite(l3, HIGH);
delay (ledDelay);
digitalWrite(l1, LOW);
digitalWrite(l2, LOW);
digitalWrite(l3, LOW);
digitalWrite(l1, HIGH);
digitalWrite(l2, HIGH);
digitalWrite(l3, HIGH);
delay (ledDelay);
digitalWrite(l1, LOW);
digitalWrite(l2, LOW);
digitalWrite(l3, LOW);
delay(ledDelay);
digitalWrite(l4, HIGH);
digitalWrite(l5, HIGH);
digitalWrite(l6, HIGH);
delay (ledDelay);
digitalWrite(l4, LOW);
digitalWrite(l5, LOW);
digitalWrite(l6, LOW);
delay(ledDelay);
digitalWrite(l4, HIGH);
digitalWrite(l5, HIGH);
digitalWrite(l6, HIGH);
delay (ledDelay);
digitalWrite(l4, LOW);
digitalWrite(l5, LOW);
digitalWrite(l6, LOW);
delay(ledDelay);
digitalWrite(l4, HIGH);
digitalWrite(l5, HIGH);
digitalWrite(l6, HIGH);
delay (ledDelay);
digitalWrite(l4, LOW);
digitalWrite(l5, LOW);
digitalWrite(l6, LOW);
delay(ledDelay);
digitalWrite(l4, HIGH);
digitalWrite(l5, HIGH);
digitalWrite(l6, HIGH);
delay (ledDelay);
digitalWrite(l4, LOW);
digitalWrite(l5, LOW);
digitalWrite(l6, LOW);
delay(ledDelay);
}

Ayuda porfavor!

int efecto = 1;
#define ultEfecto 3
#define pinPulsador 7


void efecto1()
{
   // Codigo del efecto 1
}

void efecto2()
{
   // Codigo del efecto 2
}

void efecto3()
{
   // Codigo del efecto 3
}


void setup()
{
   pinMode(pinPulsador, INPUT);
}

void loop()
{
   if( digitalRead(pinPulsador) )
   {
      while( digitalRead(pinPulsador) );
   
      if( efecto < ultEfecto )
         efecto++;
      else
         efecto = 1;
   }


   switch(efecto)
   {
      case 1: efecto1(); break;
      case 2: efecto2(); break;   
      case 3: efecto3(); break;         
   }
}