Seleccion de funciones con 2 pulsadores

Hola soy nuevo
quería ver si me pueden dar una mano con mi codigo

Tengo varias funciones If For While etc

y quiero que con 1 pulsador vaya ala siguiente funcion y con el otro vuelva a la funcion anterior

si llega a la ultima funcion vuelva a la 1ra funcion

ya intente hacerlo con la funcion switch con un contador pero siempre se queda en la 1ra funcion

Tienes que ir a Documentación y luego busca el 1er hilo, Indice de temas tutoriales y lee las Clases de 0 a 7 y de 8 en Adelante hechas por un compañero. Estan en youtube y te será de mucha ayuda.

El foro es de ayuda no de hacer el trabajo que tu debes hacer.
Tu pregunta es muy genérica por calificarla de un modo elegante.

Si no planteas una duda, no hay ayuda o guía posible.
Lo que pides esta en cientos de tutoriales por la web.

Perdon aca esta la siguiente parte del post
El proyecto se trata de controlar LED’s RGB con 74hc595
todo esta bien conectado
aca esta el codigo, los pulsadores estan conectados en pull down y con resistencia de 4.7k

he intentado con 1 solo pero no he podido hacerlo
El monitor de arduino me marca que se queda en 1

// El Clock y data pins son pines del hardware SPI, no se podra elegirlos  si usa el hardware SPI.
// Data pin es MOSI (Uno y anteriores: 11, Leonardo: ICSP 4, Mega: 51, Teensy 2.0: 2, Teensy 2.0++: 22) 
// Clock pin es SCK (Uno y anteriores: 13, Leonardo: ICSP 3, Mega: 52, Teensy 2.0: 1, Teensy 2.0++: 21)

// Se Puede elegir el pin "latch" .
const int ShiftPWM_latchPin=8;

// ** Si elimina el comentario de esta parte para NO usar el puerto SPI y cambie los números de pin. Esto es 2.5 veces más lento **
// #define SHIFTPWM_NOSPI
const int ShiftPWM_dataPin = 11; const int ShiftPWM_clockPin = 13;


// Si los LED se encienden si el pin es bajo, configúrelo en true; de lo contrario, configúrelo en false.
const bool ShiftPWM_invertOutputs = true; 

// Se Puede habilitar la opción siguiente para cambiar la fase PWM de cada registro de desplazamiento por 8 en comparación con la anterior.
// Esto aumentará ligeramente la carga de interrupción, pero evitará que todas las señales PWM se vuelvan altas al mismo tiempo.
// Esto será un poco más fácil para la fuente de alimentación, ya que los picos actuales se distribuyen.
const bool ShiftPWM_balanceLoad = false;
#define SHIFTPWM_USE_TIMER2
#include <ShiftPWM.h>   // incluye ShiftPWM.h después de configurar los pines ._.

// Aquí establece el número de niveles de brillo(0 a 255) , la frecuencia de actualización y el número de registros de desplazamiento.
// Estos valores afectan la carga de ShiftPWM.
// Eligi sabiamente y use la función PrintInterruptLoad () para verificar su carga. Puede explotar <-\('-')
// Hay una calculadora en en internet para estimar la carga. 
int currentLevel=1;

unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 75;
int numRegisters = 6;
int numRGBleds = numRegisters*8/3;
// se declara los pulsadores
const int Pulsador = 2; //pulsador 1 
const int inputPin2 = 3; //pulsador 2

boolean Estado_Pulsador;      // Para almacenar el estado del pulsador low o high
boolean Estado_Anterior;      // Usada para saver cundo soltamos el pulsador

byte Secuencia = 1;           // Para manejar la secuencia de salidas
byte Total_Secuencias=2;      // Cambia aquipara limitar ell numero de secuencias

unsigned long T_Apagar=3000;  // Tiempo a mantener pulsado el boton para apagar 
unsigned long T_Pulsado=0;    // Auxiliar para controlar tiempo de boton pulsado

int contador =1;
int numeropulsaciones=1;
void setup(){
  Serial.begin(9600);
   Estado_Anterior = false;    // Iniciamos elproceso con el boton sin pulsar
  // Se Establece la cantidad de registros de 8 bits que se utilizan.
  ShiftPWM.SetAmountOfRegisters(numRegisters);

  // SetPinGrouping permite flexibilidad en la configuración de LED. 
  // Si tus LED están conectados así: RRRRGGGGBBBBRRRRGGGGBBBB, use SetPinGrouping (4). si no se mezclaran los colores
  ShiftPWM.SetPinGrouping(1); //Este es el valor predeterminado, pero se puede agregar otro valor para demostrar cómo usar la función
  
  ShiftPWM.Start(pwmFrequency,maxBrightness);
  boolean
  pinMode(Pulsador, INPUT);
 
}



void loop()
{    

// Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón pull up. 
  Estado_Pulsador = !digitalRead(Pulsador);    // Lee el estado del botón pull down.
  
  if (Estado_Pulsador && !Estado_Anterior)     // Si pulsador pasa de low a high (entra al pulsar pero no al mantener pulsado)
  {
    T_Pulsado=millis()+T_Apagar;               // Para controlar el timpo que pasa pulsado 
    Estado_Anterior=true;                      // No enta en el if hasta q pulsador pase de high a low
    Secuencia++;                               // Pasamos a siguiente secuencia
  } 
  
  if (!Estado_Pulsador && Estado_Anterior)     // Si pulsador pasa de high a low (entra al soltar pulsador pero no al mantener despulsado)
  {
    Estado_Anterior=false;                     // No enta en el if hasta q pulsador pase de low a high
    T_Pulsado=0;                               // Al soltar pulsador ya no controlamos el tiempo que permanece pulsado
  } 
  
  if (T_Pulsado>0 && Estado_Pulsador && millis()>T_Pulsado)  
  {                                        // Si hay tiempo cargado para controlar el fin y esta pulsado y ha transcurrido el tiempo para apagarlo
    T_Pulsado=0;                           // Ya no controlamos tiempo de pulsado
    Secuencia=0;                           // Secuencia 0, todo apagado
  }  
  
  if (Secuencia>Total_Secuencias)          // Si se han acabado las secuencias
  {Secuencia=1;}                                    // Regresamos a la primera (podrias poner T_Pulsado=0; para finalizar aqui)
  
switch (Secuencia) 
{
    case 0:
          //No hay secuencia, apagar o hacer lo que necesites
      break;   
   case 1:
      // Actualiza el LED aleatorio a color aleatorio. re Flashero
      for(int i=0;i<1000;i++){
    ShiftPWM.SetHSV(random(numRGBleds),random(360),255,255);
    delay(30);
  } 
      break;
    case 2:
    // Fundido en todas las salidas
      for(int j=0;j<maxBrightness;j++){
    ShiftPWM.SetAll(j);  
    delay(10);}
      break;
}
      Serial.println(Secuencia);
      // Muestra información sobre la frecuencia de interrupción, la duración y la carga de su programa
      ShiftPWM.PrintInterruptLoad();
    }

Vaya cambio!!

Bueno tu codigo pretende que con cada cambio del pulsador haga algo, supuestamente 2 secuencias, 1 y 2

Dime que es lo que hace el código?

He modificado algunas cosas para que haga lo que quieres.

void loop() {    

  Estado_Pulsador = !digitalRead(Pulsador);    // Lee el estado del botón pull down.
  
  if (Estado_Pulsador && !Estado_Anterior) {   // Si pulsador pasa de low a high (entra al pulsar pero no al mantener pulsado)
                                               // Pasamos a siguiente secuencia
      if (Secuencia++ >=Total_Secuencias)      // Si se han acabado las secuencias
          Secuencia = 0;
      T_Pulsado = millis()+T_Apagar;           // Para controlar el timpo que pasa pulsado 
  } 
  
  Estado_Anterior = Estado_Pulsador;
                                        // Regresamos a la primera (podrias poner T_Pulsado=0; para finalizar aqui)
  
  switch (Secuencia) {
    case 0: // Actualiza el LED aleatorio a color aleatorio. re Flashero
            for (int i=0;i<1000;i++){
                ShiftPWM.SetHSV(random(numRGBleds),random(360),255,255);
                delay(30);
            } 
            break;
    case 1: // Fundido en todas las salidas
            for (int j=0;j<maxBrightness;j++){
                ShiftPWM.SetAll(j);  
                delay(10);
            }
            break;
  }
  
  Serial.println(Secuencia);
  // Muestra información sobre la frecuencia de interrupción, la duración y la carga de su programa
  ShiftPWM.PrintInterruptLoad();
}

Solo el loop

Si primeramente he estado usando 2 Secuencias tengo mas pero estaba probando con 2

El codigo hace una mezcla de colores y ala vez secuencia en Leds RGB's con el 74hc595

todavia no puedo solucionar mi problema con el pulsador

Sera que tiene que ver algo el data lock o lauch ?

Pero gracias por los consejos igualmente

Moderador: No repitas lo que se lee arriba

Y la sugerencia que te di la probaste?

surbyte:
Y la sugerencia que te di la probaste?

Sigue lo mismo se mantiene en 0 ahora ya no en 1