Katanafloor - Pedalera USB para Katana

lutop
#25 por lutop el 08/05/2020
Esquema: Los Pulsadores

Los pulsadores son simples pulsadores momentaneos normalmente abiertos, conectados a tierra. Como activamos el weak pullup del Arduino en estas entradas, no es necesaria ninguna resistencia, y el "debouncing" lo haremos por software.
Yo he utilizado pulsadores que no hacen clic, porque en este caso me gusta mas asi, pero tambien los hay que hacen clic.

Para realizar el debouncing (evitar rebotes), y los eventos para cada boton, he utilizado una libreria llamada Onebutton. Con esta libreria se pueden definir botones, y para cada uno configurar eventos segun se necesite: Al pulsar, al pulsar largo, al pulsar doble click, etc....
En este caso yo he modificado la libreria para que tambien se pueda tener botones "virtuales" que se activan al pulsar dos botones a la vez. Asi tambien se pueden definir eventos para botones dobles (y triples de hecho)

Al principio definimos los pulsadores:


OneButton button1(BUT1, 1);
OneButton button2(BUT2, 1);
OneButton button3(BUT3, 1);
OneButton button4(BUT4, 1);
OneButton buttonBANK(BUT5, 1);

TwoButton button6(BUT1, BUT2, 1);
TwoButton button7(BUT2, BUT3, 1);
TwoButton button8(BUT3, BUT4, 1);
TwoButton button9(BUT4, BUT5, 1);


BUT1, BUT2, etc... son los pines que utilizamos, estan definidos mas arriba en el codigo con #define

y despues asignamos las funciones que se llamaran en cada evento:

button1.attachClick(click1);
button2.attachClick(click2);
button3.attachClick(click3);
button4.attachClick(click4);
buttonBANK.attachClick(clickBANK);
buttonBANK.attachLongPressStart(longclickBANK);
button6.attachClick(click6);
button7.attachClick(click7);
button8.attachClick(click8);
button9.attachClick(click9);


Aqui vemos que tenemos definida una funcion para el click de cada pulsador (incluidos los "virtuales" al pulsar dos a la vez), y una para la pulsacion larga (pulsar y mantener) para el boton de cambio de banco/panel

Luego en la funciona loop() hay que meter una linea para cada boton para que refresque estados.

button1.tick();
button2.tick();
button3.tick();
button4.tick();
buttonBANK.tick();
button6.tick(button1, button2);
button7.tick(button2, button3);
button8.tick(button3, button4);
button9.tick(button4, buttonBANK);


Y definir que hacer en las funciones que hemos mencionado (click1, click2...)
Subir
OFERTAS Ver todas
  • Harley Benton ST-20HSS SBK Standard Series
    111 €
    Ver oferta
  • -29%
    Boss T-Shirt CCB-MT2TMC (Talla M)
    15 €
    Ver oferta
  • -11%
    Boss DD-500
    375 €
    Ver oferta
frandelrio
#26 por frandelrio el 08/05/2020
Perfecto, yo he pedido un arduino uno y el USB shield. El arduino viene con un kit básico, con lo que podre montarlo en la breadboard y empezar a probar.
Lo que no tengo claro es lo de los leds.
Voy a buscar información sobre lo del shift register.
Si tienes ya información, ilumínanos.

Gracias por toda la información que nos has dado.
Subir
lutop
#27 por lutop el 08/05/2020
Un shift register es un chip que almacena un registro de n bits (normalmente 8), y tiene n salidas que se corresponden con el estado de los bits. Se comunica por pulsos serie con el arduino.
Asi, cuando quieres cambiar un LED, tienes que mandar un tren de pulsos junto con un clock con el nuevo estado de todos los LEDs. Lo bueno es que no hace falta hacer ninguna multiplexion, puesto que el chip se encarga de mantener encendidos los LEDs que tocan hasta el nuevo refresco.

Si buscas "shif register LEDs" seguro que encuentras enlaces como este:

https://docs.onion.io/omega2-maker-kit/starter-kit-using-shift-register.html

Tambien hay modulos de expansions de entradas/salidas , pero en este caso que solo son salidas para los LEDs creo que un shift register ira de miedo.
Subir
frandelrio
#28 por frandelrio el 09/05/2020
Perfecto, no me había dado cuenta de que en el kit que he pedido viene un shift register.

Gracias por la info.
Subir
frandelrio
#29 por frandelrio el 16/05/2020
Hola.

Ya tengo el arduino y el usb hostshield. Pero tengo un problema. Cuando hago pruebas con el arduino solo funciona perfectamente, sin embargo, cuando le pongo el usb hostshield no puedo ni subir programas al arduino.

He estado trasteando en Internet y he encontado que le tengo que poner una gota de soldadura al VBUS PRW de 5v y a dos conexiones de 5v y 3.3v. ¿Te ha pasado algo parecido? Es que no me atrevo vaya que me cargue la placa. Te pongo una foto donde dicen las 3 soldaduras que hay que hacer.

412e8fb58abcdd3651e40326f7f19-2551567.jpg

Otra cosa, el loop no sirve para el katana 50, ¿verdad?

Gracias.
Subir
lutop
#30 por lutop el 16/05/2020
Que usb host tienes? Puedes pasar un link?

Lo del VBUS es para alimentar los dispositivos que pongas en el usb, no deberia causar problemas a no ser que conectes algo el puerto usb
Subir
frandelrio
#31 por frandelrio el 16/05/2020
Es un arceli USB hostshield. Y los 3 pines que te he mandado en la foto vienen con dos rallitas como el de 3.3v del VBUS.

https://www.amazon.es/dp/B07J2KKGZ4/ref=cm_sw_r_other_taa_KO-VEb5Y4YYQ5

En los comentarios de Amazon también pone algo de los pines. Pero está en alemán.

Te mando el enlace de lo que he encontrado y que te he comentado en el anterior post.

https://esp8266-notes.blogspot.com/2017/08/defective-arduino-usb-host-shield-boards.html
Subir
lutop
#32 por lutop el 16/05/2020
Buenas,

deberias tener los jumpers como en la foto, los de 5v y 3.3v con un pegote de soldadura, y el de 5v VBUS tambien. El de 3.3V VBUS con dos rallitas.
Subir
frandelrio
#33 por frandelrio el 23/05/2020
Hola

He hecho mi primera prueba. Y no funciona. Consigo que conecte con el katana, pero me da estos errores.

Ready!

*** USB task state: 20.
Katana NOT READY!


Waiting...

Katana NOT READY!


Waiting...

*** USB task state: 40.
channel: 5



*** USB task state: 50.
Katana NOT READY!


Waiting...

*** USB task state: 51.
Katana NOT READY!


Waiting...

############ Now I'm ready!

TX: F0 7E 00 06 02 41 33 03 00 00 01 01 00 00 F7 (15) *** Transfer error: 13.
TX: F0 7E 00 06 02 41 33 03 00 00 01 01 00 00 F7 (15) *** Transfer error: 13.
TX: F0 41 00 00 00 00 33 12 7F 00 00 01 01 7F F7 (15) *** Transfer error: 13.
*** Editor mode set!
Add item 0 to the queue: 0x10000 / 0x11 / 0x2.
Picked up item 0 from the queue: 10000 / 0x11 / 0x2.
TX: F0 41 00 00 00 00 33 11 00 01 00 00 00 00 00 02 7D F7 (18) *** Transfer error: 13.
Subir
lutop
#34 por lutop el 24/05/2020
mmmmm, parece que no comunica bien con el katana. Quizas podrias empezar con un codigo sencillo, que solo envie datos al katana sin tener que recibir los sysex, a ver si funciona. Si quieres tengo un codigo mas simple que puedes probar. Solo envia cambios de programa (mensajes PC)
Subir
frandelrio
#35 por frandelrio el 24/05/2020
Hola,
he probado con el codigo de ejemplo de gibhut de la libería MS3 y me da el mismo error.

Sin embargo, el host shield funciona, he probado un ejemplo de lectura del puerto usb conectado al katana y me da la información de este.

No sé si será algo de configuración en la librería.

Pásame el código que dices y lo pruebo, a ver si averiguamos donde está el problema. Porque, conexiones no hay que hacer ninguna, no?
Se pone el usb hostshield encima del arduino y punto. He leído por ahí, que no puedo usar los pines 9,10,11,12 y 13. Pero quitando eso nada más.
Subir
lutop
#36 por lutop el 25/05/2020
Ok, te mando esta version "light". Es una version que no lee los datos que vienen del Katana, solo manda mensajes PC y CC. Para que los leds de los FX esten bien hay que configurar que efectos hay encendidos en cada canal y grabarlo con una pulsacion larga del boton del preset (en la pedalera)
Es la primera version que hice, no recuerdo si habia muchos bugs.

Pregunta tonta: Que Katana utilizas? Lo digo porque hay un identificador de dispositivo configurado en la libreria, igual es diferente segun modelo.
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo