Paso 5: Subir código y conectar - Añadir código y conectar
El código no incluye aún las funciones octava hacia arriba, hacia abajo y de pitch (espero incorporarlas en el futuro pŕóximo). Pero permite tocar las notas de la octava media para probar que todo funcione correctamente. Tampoco hay funciones asignadas por código un los dos potes (otra promesa a futuro). El bosquejo hace uso de la librería MIDI y está basado en un ejemplo extraído de la página de Adafruit
PRINCIPIO DEL CÓDIGO
/*
Este bosquejo se basa en el código de ejemplo de ADAFRUIT
http://www.Adafruit.com/blog/2009/10/20/example-code-for-multi-Button-Checker-with-debouncing/
y aplicaciones MIDI library:
http://sourceforge.net/projects/arduinomidilib/
*/
#include < MIDI.h >
#define DEBOUNCE 10 / botón debouncer, cuantas ms debounce, 5 + ms es generalmente mucho
Aquí es donde definimos los botones que vamos a utilizar. botón "1" es la primera, botón "6" es el 6, etc.
botones de Byte [] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; el analógico 0-5 pins también son conocidos como 14-19
Esta macro útil nos permite determinar cuán grande es la matriz hasta arriba, comprobando el tamaño
#define NUMBUTTONS sizeof(buttons)
haremos el seguimiento si un botón es presionado sólo, acaba de lanzar o 'actualmente presionado'
presiona Byte [NUMBUTTONS], justpressed [NUMBUTTONS], justreleased [NUMBUTTONS];
void setup() {}
MIDI.begin(1); Lanzamiento de MIDI con opciones predeterminadas
byte me;
pin13 LED
pinMode (13, salida);
Hacer entrada y habilitar las resistencias pull-up en las patillas del interruptor
para (i = 0; i < NUMBUTTONS; i ++) {}
pinMode (botones [i], entrada);
digitalWrite (botones [i], HIGH);
}
}
void check_switches()
{
Static byte previousstate [NUMBUTTONS];
currentstate static byte [NUMBUTTONS];
lasttime larga estática;
Índice de bytes;
Si (millis() < lasttime) {}
nos envuelve, permite tratar solo otra vez
lasttime = millis();
}
Si ((lasttime + DEBOUNCE) > millis()) {}
no hay suficiente tiempo ha pasado para debounce
retorno;
}
OK nos han esperado DEBOUNCE milisegundos, permite restablecer el contador de tiempo
lasttime = millis();
para (índice = 0; índice < NUMBUTTONS; índice ++) {}
justpressed [index] = 0; Cuando empezamos, tenemos claro los indicadores "a"
justreleased [index] = 0;
CurrentState [índice] = digitalRead(buttons[index]); leer el botón
Si (currentstate [índice] == {} previousstate[index])
Si ((presiona [índice] == LOW) & & (currentstate [índice] == LOW)) {}
solo presiona
justpressed [index] = 1;
}
else if ((presiona [índice] == HIGH) & & (currentstate [índice] == HIGH)) {}
acaba de publicar
justreleased [index] = 1;
}
presiona [índice] =! currentstate [índice]; Recuerde, medios digitales de alta no
}
Serial.println (prensada [índice], DEC);
previousstate [index] = currentstate [índice]; mantener una cuenta corriente de los botones
}
}
void loop() {}
check_switches(); Cuando comprobamos los interruptores a obtener el estado actual
para (byte i = 0; i < NUMBUTTONS; i ++) {}
Si (justpressed[i]) {}
MIDI.sendNoteOn(44+i,127,1);
}
Si (justreleased[i]) {}
MIDI.sendNoteOff(44+i,127,1);
}
}
}
FINAL DEL CÓDIGO
La placa puede alimentarse directamente del puerto USB o por el conector de alimentación (7 a 15 voltios / positivo al medio). El interruptor (puente o) ubicado a la derecha (cerca del conector de 6 pines) debe estar en la posición corresponda a cada caso. Recordá desconectar cualquier dispositivo MIDI de la placa para cargar el código ya utiliza los mismos puertos de comunicación en ambos casos. Eso es todo! Solo resta conectar un cable MIDI entre el teclado y un dispositivo con MIDI in espero que lo disfrutes. Si hacés algo con él, mostrame! Rercordá podés hackear cualquier dispositivo con botones para transformarlo en un dispositivo MIDI con esta placa. Gracias po tu atención!
Jorge (Laboratorio de Juguete)
---------------------------------------------------------------------
Puede programar este teclado usando el IDE de Arduino. Hay dos maneras de subir el código. Uno está usando un típico USB Adaptador Serial como los de Adafruit, Arduino o Sparkfun (otros adaptadores no pueden tener el mismo pinout pero puedes redirigirlas, basta con mirar las etiquetas en el conector de seis pines en la siguiente imagen). Si tienes uno de esos, sólo conéctelo a la Junta. No olvide elegir el mismo tablero del gestor de arranque tu atmega tiene dentro. Si no tienes alguno de estos adaptadores puede también programar el chip en la placa de arduino, a continuación tire de ella hacia fuera un puesto en el conector de teclado.
El código es muy básico y carece de octava arriba / abajo funciones o pitchbend (esperanza para añadirlos en un futuro cercano). Ni sus tienen código asignados a los dos potenciómetros (A4 y A5). El bosquejo utiliza la Biblioteca MIDI y se basa en un ejemplo de página de Adafruit.
El tablero puede ser alimentado por adaptador USB o su enchufe (7 a 15 voltios - positivo al centro). Interruptor (o puente) en la parte superior derecha del tablero debe girarse una de estas opciones. Recuerde desenchufar cualquier dispositivo midi conectado a la tarjeta cuando intenta código ulpload puesto que utiliza el mismo puerto para dos comunicaciones. Eso es todo. Recuerde que puede usar esta tarjeta para hackear cualquier dispositivo con botones y convertirlo en un controlador MIDI. Mientras tanto, sólo el tablero utilizando un cable midi a un teclado o módulo de sonido con conector MIDI IN y disfrute! Gracias por su atención!
Jorge (Laboratorio de juguete)