Unraveling the Mysteries...
Bien, debido a la falta de drivers para Linux del conversor serial-usb que utilizamos para transmitir los datos desde la PC, trabajamos sobre una maquina virtual corriendo Windows XP. La aplicación esta desarrollada en Java y utilizamos NetBeans como ambiente de desarrollo (puedes descargar la versión mas nueva de este IDE con la nueva versión de java aquí).
El programa funciona de la siguiente manera:
- Abrir archivo MIDI.
- Decodificar.
- Discriminar propiedades de mensajes ON/OFF .
- Enviar mensajes al Microcontrolador vía RS232.
Utilizamos el microcontrolador PIC18F4550 como receptor de los datos, no tenemos ninguna razón en especial para utilizar ese modelo más que el número de pines libres que tiene, ademas contabamos ya con uno, talvez en el futuro sea sustituido por un microcontrolador un poco menos "sobrado".
Como mencionamos en las entradas anteriores de MIDI al desnudo, la transmisión de los datos se da de forma serial. Cuando cargamos los datos del MIDI al microcontrolador, la aplicación en la PC envía por el puerto serial un String con la nota a pulsar y la octava en la que esta se encuentra. Esta acción se repite cada determinado tiempo dependiendo de la estructura de la melodía cargada.
El microcontrolador trabaja voltaje TTL, es por eso que al comunicar serialmente la computadora con un micro se debe utilizar el circuito integrado MAX232, este circuito cambia los niveles TTL a los del estándar RS-232 en TX, y los niveles RS-232 a TTL en RX. El circuito típico se muestra en la siguiente figura:
El formato en el que se envían los datos, es el siguiente
- G4 : Nota Sol en la cuarta octava.
- Y4 : Nota Fa sostenido en la cuarta octava.
- Etc.
El microcontrolador compara el string recibido y ejecuta acciones convenientes dependiendo de la octava en la que se encuentra la nota recibida. Para estas pruebas preliminares declaramos un pin de salida por cada nota e ignoramos por ahora la información de octavas. En cada pin de salida conectamos un LED (en el robot serian los solenoides) que muestra si la nota esta o no siendo pulsada.
Orco: Porque no.