v3_MIDI_controller // comportamiento entradas analógicas

editado mayo 2016 en Universo Kilomux
Hola! antes que nada les cuento que al toque pude poner en marcha mi karate kit :)

estoy usando este código de ejemplo para probar los controles

https://github.com/Yaeltex/Kilomux-shield/blob/master/Arduino Code/v3_MIDI_controller/v3midiController/v3midiController.ino

la entradas digitales las tengo andando ok, pero con las analógicas me pasa que, ademas de recibir el valor de 0 a 127, varía tambien el nro de controller, es correcto este comportamiento? yo esperaba tener un controller distinto en cada entrada

me pasa con todas las analogicas, estuve revisando el código pero aún no me dí cuenta si es algo del mapeocc


las pruebas las hice con un solo potenciómetro o fader conectado y lo estoy usando en modo comunicacion midi, con el ultrasonido activado (todavia no logre hacerlo andar, pero estoy en eso)

gracias, saludos!

Comentarios

  • editado mayo 2016
    Lucas,

    El código v3midiController por defecto lee todas las entradas de ambos multiplexores.

    Si tenés alguna entrada analógica del KM "libre", es decir, no conectada a nada, lo que vas a leer en ese momento es ruido.

    Para solucionar esto, podés hacerlo de dos formas:
    • Por hardware, conectando todas las entradas libres a GND o a 5V, de forma de que el valor leído sea fijo, y al no cambiar, no sea enviado como mensaje MIDI.
    • Por software, modificando el sketch de Arduino para que lea solo las entradas que usas.
      Para esto se me está ocurriendo en este momento una forma de hacer que se pueda configurar en forma sencilla si la entrada debe leerse o no!
      Puedo probarla mañana y si lo logro te actualizo el código de github y te aviso para que lo intentes.
      Si querés hacerlo vos, estoy pensando en un array de bools de 2x16 que se llame entradaActivada, donde se indique con 1 o con 0 si la entrada se debe leer o no, Luego en la función "LeerEntradas()", se pone un condicional en cada ciclo del "for" para cada mux, preguntando si se debe leer la entrada o no.
    Sería algo así:
    const bool entradaActivada[2][NUM_MUX_CHANNELS] = {
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; // Entradas del MUX_A, de 0 a 15 -> 1 activada, 0 desactivada
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; // Entradas del MUX_B, de 0 a 15
    };
    ...
    ...
    ...
    for(int i=0; i< NUM_MUX_CHANNELS){
    if(entradaActivada[MUX_A][i]){
    // Leer valor de la entrada
    }
    }
    for(int i=0; i< NUM_MUX_CHANNELS){
    if(entradaActivada[MUX_B][i]){
    // Leer valor de la entrada
    }
    }
  • editado mayo 2016
    Ahora si!

    En el github ya está cargado el nuevo código, bajo la misma versión: v3midiController.ino

    Tiene dos arrays nuevos, en las lineas 114 y 152.
    • tipoEntrada -> Puede estar en ANALOGICA o DIGITAL
    • entradaActivada -> Puede estar DESACTIVADA o ACTIVADA
    Solo se leen las entradas que se encuentren ACTIVADAS.

    De todas formas, siempre es recomendable fijar las entradas que no se usen a un nivel conocido mediante una conexión física, que, para este caso puede ser GND o 5V, para que no existan fuentes de ruido.

    Cuando lo pruebes, contá cómo anduvo!

  • hola sano!
    efectivamente era ruido por tener el resto de los pines sin conexion, los puse a todos a gnd y anda perfecto. gracias!

    no probé aún la nueva versión del código, pero buenísima la mejora, es muy util, saludos!
Accede o Regístrate para comentar.