Paso 11: Software - firmware del microcontrolador
Aunque el Atmega324p no es probablemente el más ampliamente utilizado microcontrolador (uC), la mayor parte de este código funciona bien en la más popular serie atmega168 que se utiliza en los arduinos. La única modificación sería la implementación de un software UART para el puerto de MIDI desde la 168 serie sólo tiene un UART. Sin embargo, esa característica podría fácilmente dejar hacia fuera, ya que tengo que admitir, no he nunca enchufado un dispositivo directamente a través de MIDI desde que terminé la prueba que trabajó.El firmware de la uC está configurado para manejar cualquier entrada desde el puerto de MIDI, puerto USB o ambos simultáneamente. Conmutación entre modos determina el encaminamiento de los mensajes. Además, se puede definir la nota de inicio ya sea local o remota mediante el interruptor pulsador frontal. Cuando el interruptor es presionado, la siguiente nota presionado y lanzado en el teclado establecerá la primera bombilla que esa nota. Esto obviamente no es una necesidad, sin embargo, encontrar gente un poco menos perplejo en cuanto a lo que están haciendo las luces si ven las bombillas iluminan en secuencia de izquierda a derecha. Cuando la raíz tenga en cuenta de la clave de su juego en la primera bombilla de luz, las luces tienden a saltar por un poco menos irregular, dependiendo de lo que usted está jugando por supuesto. Lo bueno es que ya que esto puede ser controlado remotamente, es fácil establecer la clave de tu canción para que actualiza automáticamente cada vez que se cambia (ver la última sección del objeto max4live utilizando Ableton Live).
Cuando se cambia el modo de la unidad, la parte delantera led de un color diferente, que indica si el usuario local tiene control o si es controlado remotamente. Esto va en bastante inútil pero se ve cool categoría.
La mayoría del software está configurado para manejar los mensajes entrantes (midi/usb). El cristal externo conduce la uC en 18.423 MHz, para obtener 0% error en 115200 baudios. Aparte de ir línea por línea mediante el código no hay mucho más para hablar, no dude en preguntar cualquier duda que tengan, los códigos a continuación. El zip tiene el inlcluding todo proyecto el archivo avrstudio (avrstudio5, recientemente actualizado y convertido todos mis antiguos proyectos, debe también! su mucho mejor que avrstudio4!). He dejado los archivos individuales de UART puesto que están fácilmente disponibles en otros lugares.
Algunos puntos útiles al escribir para midi. Necesitarás un reloj UART de 31250 baudios, que significa, para un error de 0%, necesita un cristal con un múltiplo entero de eso. Que funciona muy bien, puesto que el construido en 8Mhz trabaja fino, o 16Mhz, etc.. Sin embargo, surge un problema al combinar UART MIDI en el mismo chip como RS232 UART. El "estándar" baudios, 9600, 112500 etc, no funcionan bien con cristales de 8Mhz. Por lo tanto, que do...well hay dos opciones de trabajo.
1. Utilice el cristal incorporado o similar frecuencia (8Mhz... o 16 Mhz, 20 Mhz etc.) y usar aliasing tasa de baudios para corregir para el usb.
2. aceptar el error en una de sus líneas. Personalmente, no me gusta esta opción, sé que mucha gente correr cosas a 9600 baudios con cristales de 16Mhz, pero no me gusta.
Así que, aquí está un montón de enlaces a aliasing la velocidad en baudios usando el controlador FT232R. He hecho esto en un PC y un MAC, funciona muy bien y le permite enviar datos en mucho mayores tasas de transmisión de RS232 fue significado para el. Por ejemplo, en lugar de un pico a 225 kbps, se puede ir hasta 3Mbps (aunque la mayoría atmegas sólo pueden hacer 2 Mbps).
Cómo hacerlo en OSX (siga los pasos atentamente, realmente funciona, lo prometo)
Y, en un PC
Gran artículo sobre aliasing la velocidad en baudios para usar xbee Controladores MIDI (Sólo PC)