Botones para shifters

Hola, como podría hacer para que los botones de los shifters queden en modo toggle y los demas botones queden en modo normal?

Comments

  • NefNef
    edited December 2015
    bueno, ya encontré en el código como hacer eso, pero se puede hacer que solo unos botones, por ejemplo los del shifter 2 sean toggle, y los de los demas bancos sean normales?

  • edited December 2015
    Si! Se puede, creo que con alguno de los del TCMIDI#2 lo hicimos, pero no puedo recordar con quien... de todas formas, podemos probar a distancia.

    La idea sería, encontrar en qué parte del código se verifica si el es o no un shifter, y cambiar su comportamiento según el shifter.

    Eso se encuentra en la función LeerEntradas() (aprox linea 529), donde está el siguiente código:
    2015-12-27 20_24_23-TESLA Arduino 1.6.6

    Este código se encuentra en una zona a la que sólo se accede cuando se suelta un botón, es decir cuando pasa de "presionado" a "no presionado".

    Vemos hay un "if" al que se entra sólo si el botón que se soltó es un shifter, esto lo logramos con la función EsShifter(canal). Esa función devuelve 0, si el botón no es un shifter, pero si lo es, devuelve qué número de shifter se presionó (1, 2, 3 o 4). Con el programa así como está, no usamos esa información, ya que solo nos interesa si es o no es un shifter, pero podemos cambiarlo para saber cuál es ese shifter.

    Luego, hay una comprobación, por la etiqueta TOGGLE_SHIFTERS, que seguramente es la que descomentaste arriba para lograr que tus shifters se comporten con el modo TOGGLE. 
    El programa se fija si esa etiqueta no existe, quiere decir que al soltar el shifter, debemos cambiar el banco al original. Recordá que el modo TOGGLE, cambia el banco al presionar nuevamente el botón, mientras que el modo normal, lo cambia al presionar el botón, y al soltarlo, vuelve al banco original.

    Por lo tanto, sabiendo que shifter se presionó, podemos verificar para ese shifter (o no) si el modo toggle está activado.

    Eso se lograría con el siguiente código, en reemplazo del código anterior borrando lo anterior y poniendo este código en su lugar). Con este código, los shifters 3 y 4 nunca serían TOGGLE, y los shifters 1 y 2, si definís la etiqueta TOGGLE_SHIFTERS, sí lo serían.

    #if defined(SHIFTERS)                                 // Si estoy usando SHIFTERS      
                // Si el botón presionado es uno de los SHIFTERS de bancos
                  int cualShifter = EsShifter(canal);
                  if (cualShifter){
                    if(cualShifter == 1 || cualShifter == 2){
                      #if !defined(TOGGLE_SHIFTERS)
                      CambiarBanco(-1);  
                      #endif
                    }
                    else if (cualShifter == 3 || cualShifter == 4){
                      CambiarBanco(-1);
                    }
                    continue;
                  }           
                #endif       // endif SHIFTERS

    Espero que te sirva, y si tenés alguna otra pregunta, sin miedo :)
  • Hola Nef! Contá si tuviste exito con esto!
Sign In or Register to comment.