Controlador de estilo MIDI MPC casero (2 / 6 paso)

Paso 2:

3,3 Keypress
"Análisis" es el proceso que utilicé para multiplexar el botón botón para no tener que utilizar 16 pines en el microcontrolador de 16 botones. En vez de eso solo tuve que usar 8 pernos. Si hace referencia al paso 4 he incluido el esquema para la almohadilla del botón compré de sparkfun electronics y han indicado el camino de la señal de cada pin en el teclado botón PCB. Como puedes ver hay pines separados para controlar los LEDs y control de los botones. Los pines de control del LED se discutirá en una sección posterior.
El microcontrolador es configurarlo para que todas las columnas son salidas y todas las filas son las entradas. Si hace referencia al esquema de teclado botón, comienzo poniendo la primera columna (que es el pic RB4) a cero. Configurar el resto de las columnas para 1(RB5,RB6,RB7).  Entonces, el programa comprueba el estado de todas las filas en el mismo time(RC4,RC5,RC7,RC0). El programa hace una pausa de 1 milisegundo y comprueba de nuevo los pernos. Desde interruptores y botones de rebote a menudo, esto provoca ondulaciones no deseadas en la señal, así eliminamos esto con un proceso llamado de rebote. Si los valores de los dos controles son iguales entonces significa que es una pulsación válida sobre esa columna y no una despedida.  El programa entonces entra en un bucle, que comprueba el estado de cada una de las filas. Si se presiona un botón en la columna, se lee como un cero en la fila correspondiente ya que la columna se establece en cero. Puesto que cada uno de los pernos de las filas tiene un resistor de pull-up de 10 k (no se muestra en el esquema de teclado botón), si no se presiona un botón que perno de la fila se leerá como un 1.
Una vez que se detecta una pulsación en la columna se envía un mensaje de midi byte 3 sobre el hardware del puerto serial en el PIC.  El primer byte es 0x92 que el equipo se detecta como una nota de canal 4 en el mensaje. El segundo byte es que nota es encendido, que puede estar en cualquier lugar entre 0 y 127. Puesto que estoy usando un bucle comprobar cada una de las filas que estoy usando el de variable de bucle "i" para indicar que nota quiero en.  Puesto que también estoy usando 8 bancos de notas (total 128 notas) la agrego a la variable actual de banco que es "c". El proceso del interruptor de banco será discutido en la sección 3.4. El último byte es la velocidad que también puede ser en cualquier lugar entre 0 y 127, pero con todos los botones configurar ese valor a 100.  La siguiente línea de código a continuación, envía los mismos comandos en texto ascii a un LCD sobre un pin del microcontrolador que configuré software serie hacia fuera.
El microcontrolador también debe detectar cuando una nota es porque necesita enviar otro comando para apagar esa misma nota. Dentro del mismo bucle que esto se hace mediante el envío de los misma 3 bytes excepto el byte(velocity) pasado, se establece en cero que apaga esa nota. Si este comando no enviado, esa nota quedaría indefinidamente, incluso si ese botón fue lanzado.
Hasta este punto sólo hemos comprobado el estado y envía comandos para los 4 botones en la primera columna. Todo este proceso es repetido 3 veces más, uno para cada columna.  En el siguiente bucle for establecer la columna próxima a cero y el resto el valor 1 y lo mismo para las columnas restantes.

3.4 Banco cambio
Puesto que hay 128 midi diferentes notas que se pueden enviar como un comando midi que quería ser capaz de hacer usan de todos ellos, así que añadido la capacidad de banco entre los grupos de 16 notas a la vez. Para ello he añadido dos botones en el panel frontal debajo de la pantalla (ver figura 1.0).  Para Banco para arriba, yo encuestados la entrada del perno en el microcontrolador que configurar como entrada para banca para arriba. Desde configurar estas entradas del microcontrolador con una resistencia de pull-down he comprobado baja o alta transición cuando el interruptor se conecta a VDD. Cuando se detectó que la transición, he añadido uno a la variable "j".  Lo configuro para que una vez que "j" tenía más de 8 restablecer a cero. Yo también quería guardar el Banco en la eeprom no volátil así que si por razón lo que tengo que quitar el poder a volver a organizar los cables del controlador midi botas para arriba y se ajusta automáticamente a la orilla fue antes de se apagó.  También encontré que si estaba sosteniendo una nota y uno de los botones bank presiona al mismo tiempo, el controlador midi perdido la pista de que nota se presionó para que esa nota nunca se apague. Para solucionar esto he hecho un bucle que desactiva todas las notas al mismo tiempo en cualquier momento deposito arriba o abajo.  Usé el mismo código para el Banco botón excepto en lugar de agregar uno a la "j" restan uno de "j" y ha restablecer a 8 si fue por debajo de 1.   Que configurarlo así "j" como una variable global y se utiliza a través de diferentes secciones del programa.
Al final de esta función, comprobar cuál es el valor j es y establecer en consecuencia la variable "c". "c" permite que el controlador midi con 16 notas a la vez añadiendo a cualquier número de teclado que está presionando.  Por ejemplo si quiero número de nota midi 35 en, tengo que ir al Banco 3.   "c" se agrega a que el número clave estoy pulsando. Por lo que si estoy presionando el botón número 3 en el teclado, controlador midi agrega el valor "c", que en este caso es 32.

3.5 RGB
Me puse a un lado 3 pines en el microcontrolador para controlar todos los LEDs RGB.  Ra0 controla todos los LEDs rojo, RA1 controla todos los LEDs verdes y RA2 controla todo el azul.  Cada pin controla todos los LEDs al conectar a la puerta de un MOSFET en el tablero de conductor del LED (ver paso 4). Los LEDs tuvieron que ser conducido de esta manera porque la corriente necesaria para manejar los LEDs supera el actual abastecimiento de capacidades microctrollers.
Esta función RGB en el programa básicamente comprueba qué Banco de información sobre el controlador midi en comprobando el valor de la variable "j".  Para obtener los colores simplemente combiné diferentes conjuntos de colores juntos. Por ejemplo, para obtener el color púrpura, enciendo el rojo y azul al mismo tiempo por RA0 y RA2 a alta y RA1 a bajo.

Artículos Relacionados

Controlador de DJ MIDI de estilo arcade

Controlador de DJ MIDI de estilo arcade

>>> esto no es muy acabado pero ya armado un poco del circuito. Voy a actualizar el instructivo y subir un video cuando se ordena <<<He sido DJ por cerca de 10 años, y para los últimos he intercambiado buena viejo vinilo moda vinilo virt
Cómo crear un controlador de Dj MIDI

Cómo crear un controlador de Dj MIDI

así que esto era un proyecto escolar. Acabo de terminarlo. El documento adjunto al final es todo el proyecto, como lo he escrito bien a mano. Si desea tratar esta build me avisas y te puedo dar algunas sugerencias. También un alza para este proyecto
Hackear Pads SNES a hacer controladores de estilo Arcade de Retropie

Hackear Pads SNES a hacer controladores de estilo Arcade de Retropie

Hi y gracias por tomarte un tiempo para leer mi tutorial increíble. El cumpleaños de mi hermanita es el 25 de febrero, está convirtiendo 29 y supongo que empezó a sentir un poco viejo porque ella me pidió dar una de mi Super Nintendo y un cartucho de
Rocksmith Pedal de Control (controlador de estilo Stompbox) para XBox 360

Rocksmith Pedal de Control (controlador de estilo Stompbox) para XBox 360

este es mi primer Instructable.  Me alegra que mi momento coincidirá con el plazo de inscripción para el Game.Life 2 Challenge! He intentado hacer instructables antes, pero parece que a medio camino a través de mis proyectos, dejar de tomar fotografí
Controlador de pie MIDI (Pedalera controladora MIDI) para Amplitube 3.

Controlador de pie MIDI (Pedalera controladora MIDI) para Amplitube 3.

Instrucciones de armado y puesta en funcionamiento del Midi pedal.(Pedalera controladora MIDI) para Amplitube 3.Hola, uso habitualmente el programa Amplitube 3 para practicar con mi Guitarra, realmente me gustan mucho los sonidos y posibilidades de c
Controlador Arduino personalizado MIDI

Controlador Arduino personalizado MIDI

Hola y Bienvenidos a este instructable sobre cómo construir un controlador USB MIDI personalizado, barato y fácil, basado en Arduino. La mejor noticia: sólo tiene que conectar sin problemas con interfaces USB a MIDI, o herramientas de software como M
Controlador de DJ MIDI PACMOD

Controlador de DJ MIDI PACMOD

para el cumpleaños de mi hijo le hice una controladora para DJ diseñado para parecerse a un viejo gabinete arcade de la máquina. Lo que sigue es un breve resumen del proceso para hacerlo, incluyendo el código.El Teensy fue elegido como el cerebro deb
Controlador de pie MIDI basados en Arduino DIY

Controlador de pie MIDI basados en Arduino DIY

Llevo muuuucho tiempo con intentar un lazador de guitarra durante un tiempo, pero no me gusta la idea de gastar dinero en un pedal específicos del lazador cuando puedo usar un ordenador para eso y desde que he estado aprendiendo arduino para divertir
Controlador de pie Midi Arduino para Ableton Live

Controlador de pie Midi Arduino para Ableton Live

Soy un geek. Yo lo sé. Me gustan las cosas DIY'ing. Compré una impresora 3d (que está sentado en mi oficina no funciona ahora mismo)... y como construir drones. Yo generalmente morder más de lo que puedo masticar y a menudo tiene que ir a otros para
Zeta Reticuli: MIDI control de ecualizador de 10 bandas y múltiples interfaz de efecto externo

Zeta Reticuli: MIDI control de ecualizador de 10 bandas y múltiples interfaz de efecto externo

aproximadamente la mitad mi vida (20 años) hace que solía tener literalmente drillions y drillions de ideas que todavía siento no es una completa pérdida de tiempo. Una de estas brillantes ideas debía ser capaz de controlar un pedal de wah-wah guitar
Dibujar-MIDI controller con tinta conductora

Dibujar-MIDI controller con tinta conductora

'Draw It Yourself' es un controlador MIDI que utiliza tinta conductora como botones. Está basado en Arduino y utiliza un sensor capacitivo (dos, en realidad) para determinar si los botones dibujados son ser tocados o no.http://sanidanz.tumblr.com/dra
Tambores de guante MIDI con Arduino y sensores de luz

Tambores de guante MIDI con Arduino y sensores de luz

voy a describir una divertida y fácil manera de construir su propia expresión sonido MIDI habilitado guante sin gastar mucho dinero en costosos sensores o Interfaces MIDI.Sienta libre de entrarme en contacto con directamente por correo si gusta o si
Pedal de Teensy USB MIDI para controlar Mobius Looper

Pedal de Teensy USB MIDI para controlar Mobius Looper

Motivación:Tocando en una banda de 2 piezas, con los tambores y un montón de otras muestras que se está reproduciendo como forro pistas, era necesario utilizar una lanzadera para agregar más elementos a las pistas. Un looper basado en hardware falla
Usar una caminadora DC Drive Motor y controlador de velocidad PWM para accionar herramientas

Usar una caminadora DC Drive Motor y controlador de velocidad PWM para accionar herramientas

pueden requerir herramientas eléctricas tales como molinos de corte de metales y tornos, taladros, sierras, lijadoras y más .5HP a 2HP motores con la capacidad de ajustar la velocidad manteniendo el esfuerzo de torsión.Coincidentemente la mayoría de