Semáforo con incremento de secuencias

Me podrían ayudar con la estructura de un programa de un semáforo de doble vía en el cual al aplastar un pulsante realize su secuencia 1 vez,y al aplastarlo otra vez realize su secuencia 2 veces, y al aplastarlo otra vez lo realize 3 veces.... y bueno asi sucesivamente....

Pues podrias hacer algo asi

void loop()
{


   if (se presiona el pulsador )   
      contador++;  //contador suma uno 
 
   switch (contador) {
       case 1:

          Primer secuencia de semaforo
         
         break;
       case 2:
         segunda secuencia de semaforo
         
         break;
        case 3:
         tercer secuencia de semaforo
          break;
          
       default:
       

   }


   aqui debes pones un if para regresar el contador a cero según las secuencias que necesites