Este proyecto pretende continuar con el legado de la Diskmag multiplataforma Exilium (Belial 01), bajo un ATMEGA328 (arduinocade).
Primero necesitamos una plataforma hardware, que en este caso, será el arduinocade (Peter Barrett).
Para poder acercar la plataforma al máximo número de personas, se realizará un primer diseño bajo una placa de ARDUINO UNO sin necesidad de cambiar el cristal de 16 Mhz (sacrificando el color), así como la mayor compatibilidad de pines y hardware del arduinocade.
Se utiliza una placa ARDUINO UNO, dotada de ATMEGA328, así que también valdría DUEMILANOVE o NANO, respetando la localización de los pines.
Se hará uso de los mismos pines del arduinocade:
- Video - D1 y 9
- Audio - D6
- A4,A5 - I2C para conectar EEPROM LC256
- 13,12,11- Programador ISP
- D2 y D3 - Teclado PS/2
- ATARI - A0,A1,A2,A3,D4 y D5
Se utiliza el modo SPI (Dave Schmenk) para generar video, similar al arduinocade, pero con la diferencia, de seguir con el mismo cristal de 16 Mhz del arduino, de forma que se genera una señal:
- CVBS RCA
- NTSC blanco y negro
- Hsync 63.55 microsegundos
- 320x200 pixels
- Tiles 40x25
- DAC simple resistencia 1 K y 470 ohmios
El audio de arduinocade se caracteriza por:
- PWM - pin D6
- Salida mono
- 4 canales
- Resistencia 100 K
También he añadido un mezclador de audio pasivo simple, de manera que podemos mezclar la salida del arduinocade MONO con una entrada de audio estereo. Para ello debe usarse resistencias de 1 K para cada entrada:
Gracias a este mezclador, podremos poner música de fondo de dispositivos de audio externos, mientras suena la música del arduinocade.He creado un programa de Test de joystick ATARI para Arduino, que nos permite testear la pulsación de los botones: joystickTestDB9 Se usa la norma de ATARI y AMSTRAD CPC de masa común, PULLUP, y los pines a usar en ARDUINO son:
- Arriba - 14 (A0)
- Abajo - 15 (A1)
- Izquierda - 16 (A2)
- Derecha - 17 (A3)
- A - 4
- B - 5
Disponemos de:
- Parte servidora (móvil u ordenador) en navegador web que recibe peticiones de comandos de sonido, via tonos de audio
- Arduinocade generando comandos de control de canciones via sonido
JUKEBOX DTMF (github)
JUKEBOX DTMF (online)
Los tonos que se generan son monotono cuadrados, pero de 2 tipos:
- Con sincronismo NTSC de 63.55 microsegundos
- Normales sin interrupción de sincronismo de video
Para el segundo caso, se dejará de dibujar en pantalla cada vez que se genere sonido, pero se generará una onda más pura. Debemos en la parte HTML5 tener quitado el checkbox DTMF y el NTSC. Los comandos que se envian como nonotono son:
- #00* - Track 0
- #01* - Track 1
- #02* - Track 2
- #04* - Track 3
- #07* - Track 4
- #0D* - Track 5
- #10* - Track 6
- #11* - Track 7
- #12* - Track 8
- #14* - Track 9
- #24* - Track 10
- #20* - Next Track
- #21* - Last Track
- #22* - Play/Pause
- #17* - + Volumen
- #1D* - - Volumen
- 0 - 1336 Hz
- 1 - 697 Hz
- 4 - 770 Hz
- 7 - 852 Hz
- D - 1633 Hz
- # - 561,98718669215 Hz
- * - 393,3910306845 Hz
- 2 - 302,60848514192 Hz
- 0 - 1336 Hz
- 1 - 697 Hz
- 4 - 770 Hz
- 7 - 852 Hz
- D - 1633 Hz
- # - 1477 Hz
- * - 941 Hz
- 2 - 1209 Hz
- Arriba - Subir volumen
- Abajo - Bajar volumen
- Izquierda - Canción anterior
- Derecha - Canción siguiente
- A - Play/Pause
- B - Modo NTSC sin dejar de dibujar en pantalla, o sin interrupciones, dejando de dibujar
He creado varias herramientas:
- Conversor de imágenes a Tiles (eliminación de repetidos)
- Simulador visual 40x25 de todo el mapa de memoria del arduinocade en HTML5
- Simulación de Joystick en HTML5
- Simulación de sonido en HTML5
La captura del test del joystick en el arduino: La captura del Jukebox en el arduino: Se puede meter en una simple caja de madera o de plástico.