Lo prometido es deuda. Aqui teneis la version mejorada con interrupciones para los LEDs. Basicamente soluciona el problema de los LEDs parpadeando como locos entre cambios de canal y mientras se utiliza el pedal de expresion.
No es necesario si utlizais un shift register o similar.
Hola buenas.
La pedalera va bien, poco a poco. Ya tengo el cambio de canales funcionando perfectamente. Como mi amplificador es el katana 50, solo tiene 4 canales y para no tener que cambiar de banco he hecho que cada botón cambie de canal. Y me ha dado problemillas, ya que los canales son el 1,2,5,6. Y el 0 para el panel. Ahora me estoy peleando con los estados de los efectos, para mostrarlos en la pantalla oled que he pedido. Mientras llega, lo estoy probando con el puerto serie. Estoy viendo todo lo que se puede, mostrar y eligiendo con qué me voy a quedar. Luego me pondré con la activación/ desactivación de efectos. Pero aquí puedes controlar lo que quieras. Tiene mucho potencial.
Lo que me surge es una duda. Una vez que tenga la parte básica, es decir, cambio de canales, activación/ desactivación de efectos y visualización de datos en la pantalla, como paso el proyecto de prototipo a definitivo? Me refiero a que estoy usando una breadboard y pulsadores de los que vienen en los kits de arduino. Para pasarlo a pulsadores reales y para no usar los cables con los pinchos, qué hay que hacer?
Hola buenas,
ya me ha llegado la pantalla.
Ya soy capaz de cambiar de canal y mostrarlo en la pantalla.
Ahora estoy liado con los efectos.
Soy capaz de poner en pantalla el efecto (Booster,Mod,FX,..) y si está activado o desactivado.
Pero no soy capaz de poner el nombre.
Cuando lo hago se reinicia el arduino.
Este es el código:
static const char *amp_list[] {"Nat Cln", "ACOUSTC", "CmCrnch", "StCrnch", "HiGnStk", "Pwr Drv", "ExtLead", "CoreMtl", "CLEAN ", "ClnTwin",
"PrCrnch", "CRUNCH ", "DxCrnch", "VoDrive", "VO Lead", "MtchDrv", "BG Lead", "BgDrive", "MS-59 I", "MS59 II",
"RFr Vnt", "RFrMdrn", "TAmp Ld", "BROWN ", "LEAD ", "Custom "
};
switch (CHECK_THIS) {
case P_AMP:
a = (byte_array);
// txt = String(amp_list[a]);
txt = amp_list[a];
Serial.println(F("AMP Type: ") + txt);
message2 = "Amp: " + txt;
//KATANA_DEBUGLN(message4);
break;
Es posible que sea con el tratamiento de cadenas. Estoy un poco perdido, la cosa es que si le pongo que me muestre la variable "a", me devuelve un número
Gracias.
Pues si, tiene pinta que es algun problema con los strings
Que hay en "a"? solo veo un casting a un tipo de variable (byte_array) que tampoco veo de donde sale
Perdón, este es el código:
String txt;
uint32_t a;
char state[8];
for (uint8_t i = 0; i < CHECK_THIS_SIZE; i++) {
strcpy(state, (bitRead(states, i) ? "on " : "off"));
switch (CHECK_THIS) {
case P_AMP:
a = (byte_array);
txt = amp_list[a];
Serial.println(F("AMP Type: ") + txt);
message2 = "Amp: " + txt;
break;
}
Te envío una captura de pantalla, que me quita caracteres.
Archivos adjuntos (
loguéate para descargar)
Yo haria pruebas para ver de donde viene el problema.
-Si no utilizas el LCD y solo enviar al debug, tambien peta?
-Si en lugar de utilizar un array de strings pones un string, peta?
-etc...
Trabajar con pointers y arrays de strings siempre es un poco tricky
veo que el codigo es el mismo que en el original, asi que deberia estar bien. Que numero te sale en "a"?
pues no te sabria decir... todo parece mas o menos ok.
Ya he dado con la tecla.
Parece ser que es un problema de castings de tipos.
Haciendo esto se soluciona:
Archivos adjuntos (
loguéate para descargar)