* audio utilizado bajo licencia de creative commons, ver youtube para más detalles.
El controlador de gráficos hace tres cosas:
1) acepta Mostrar instrucciones desde un puerto USB (puerto de com virtual compatible con plugins de winamp viejo).
2) lee Mostrar scripts desde una tarjeta SD. Secuencias de comandos de pantalla se hacen en una PC utilizando el programa de seq_txt (y fuente) unido a este instructable.
3) decodifica las instrucciones de la pantalla y los envía a las tablas del conductor.
USB
La tarjeta usa un pin 28 PIC con hardware USB. Esto es super fácil de implementar usando el driver de microchip USB CDC. No me he molestado para poner esto en ejecución todavía. No planeo usarlo y un poco de engaño de la memoria se requiere. Las fotos de USB 18fX550 sólo tiene 2K de ram. El sistema de archivos FAT (abajo) utiliza 2 buffers de 512K para leer la tarjeta SD. Se toma de la parte superior 1k normalmente reservados para USB por el driver de microchip CDC. SO: desde USB uso voluntad siempre tienen prioridad (es decir parará el juego de tarjeta SD y la tabla espera instrucciones después de USB está enchufado) sólo podemos reutilizamos los buffers de memoria FAT para el USB cuando está conectado. También tenga en cuenta: el pin de Vcc USB realmente está conectado a un pin PIC. Esto es así podemos detectar un cable usb sin enumeración completa (tal vez?).
Tarjeta SD
Archivos de animación se pueden hacer con el programa de seq_txt.exe (windows) (y fuente) unido a este instructable. Los archivos originales se pueden encontrar aquí. No los escribo. Creo que fueron creados por el usuario de instructables Mathieu Roncheau. Su un archivo EXE desnudo de origen desconocido. Uselo bajo su propio riesgo (pero he no he tenido problemas). Haga clic en las plazas de este programa para crear imágenes que mostrar en la tabla daft punk, haga clic en ' >' para hacer un marco nuevo. Haga clic en el disco para guardar una representación de texto de las imágenes que usted dibujó.
Aquí está un ejemplo del archivo que va con la imagen que se muestra en la siguiente pantalla de ejemplo:
1 2 4 8 16
Esta es la representación ascii de su equivalente binario de cada columna, con la parte superior como 0. La primera columna es 10000 = 1, el tercero es 00100 = 4 y así sucesivamente. Cada línea representa un marco, cada línea termina con \r y \n.
Estos archivos se copian en una tarjeta SD (como su uso de cámara digital) al igual que cualquier otro disco. El controlador acepta tarjetas SD en cualquiera de los formatos comunes (FAT12/16/32) gracias a una versión mínimo de DOSFS por Lewin Edwards.
El controlador Lee a través de todo el *.dpt (tabla de daft punk) archivos en el directorio raíz de la tarjeta SD y 'juega' cada uno. Cuando se leen todos los archivos comienza más al principio.
Mostrar la decodificación
No importa cómo los datos se mete en el controlador, llega como representaciones ASCII de imágenes de mapa de bits. Yuck.
Tenemos que convertir los datos ascii a un entero real. En el ejemplo anterior la última columna (00001 en binario) está representada por 16 en decimal. 16 realmente está representado por dos bytes en un PC - 1 y 6. Además, estos bytes se codifican como ASCII, 1 es realmente 0x31 y 6 es realmente 0x36.
Un) sustraer 0 x 30 de cada dígito (| = 0 x 30... xor?).
B) añadir el primer dígito a la nueva variable X
C) X multiplicar por 10
D) se añade una segunda cifra, repita C y D según sea necesario para procesar todos los dígitos.
Una vez que haya terminado su justo carácter golpeando los bits a unos pernos.
Código de estado
El código es sólo apenas alfa. Quería conseguir el PCB y el código porque algunas personas han expresado su interés. El controlador USB no está implementado aún y requiere algo de atención a la organización de la memoria. La grasa & SD libs trabajo grande, lee archivos en un bucle sin ningún problema, pero ha sido probado sólo FAT 16. El código aún no se ha movido en funciones aseadas, su simplemente 'tal cual' de mi primer prototipo de trabajo.
Futuras mejoras:
- Conectividad USB a través de la CDC (puerto virtual com/serie).
- Construida en fuente para texto renderizado sobre USB o leer archivos .txt de la tarjeta SD.
- Uso construido en tipo de letra para mostrar los mensajes sin tarjeta/mala tarjeta.
- Error en SD lecturas y análisis de la animación.
- Los puertos ADC quedaron disponibles para el control de la velocidad de detección ritmo base.
- Los puertos ADC/DIO dejaron libres para interruptores o potenciómetros.
- Añadir instrucciones de lazo y velocidad para el formato del guión de animación... desde valores de mapa de bits son siempre 0-31, un valor de 32 podría desencadenar un bucle de N veces determinado por el dígito siguiente. Un valor de 33 podría especificar una nueva actualización de tasa (velocidad).
- Hardware prueba/power en self test (POST) - escribir bytes en el expansor de IO y leer la salida del último tablero en la cadena de. Si bytes out = bytes entonces hardware está funcionando correctamente (requiere conexión de loop-back a la última tabla de expansor de salida de la cadena).
Descripción general del hardware
Circuito y PCB están en formato Cadsoft Eagle.
Firmware con compilador MPLAB y C18.
Para los geeks: el microcontrolador es un perno 28 8 bits PIC18f2550 con hardware del USB y la memoria ram de 2K. Funciona a 5 voltios porque necesita 48 MHZ para hacer el interfaz del USB (a través de un cristal de 20Mhz). La tarjeta SD es 3.3v solamente lógica. La tarjeta SD tiene su propio + 3,3 fuente de un LM317 de 5.1V compartida por la PIC y los LEDs. Su no estrictamente perfecto, pero funciona. Las señales en la tarjeta SD se dividen en alrededor de 3V con un divisor de resistencia K 2,2 y 3,3 K. La salida de datos de la tarjeta para el PIC se queda desnuda, los 3,3 v alta es suficiente para gatillo Vh en el PIC. Recogí el diseño del divisor del voltaje del manual del compilador de MikroeBasic. Esto no es un acuerdo ideal, tuve que cortar la velocidad SPI de reloj/64 antes de que no me pude comunicar confiablemente con la tarjeta SD. Sin embargo, esto se lee única operación donde velocidad no importa así que funcionó perfectamente (¡ y baratos!).